2017-02-17 122 views
0

単語を暗号化して解読できるスクリプトを書こうと思った。しかし、私は問題に遭遇し、それを理解することはできません。私は暗号化に使用されるこのコードはこれです:のは、私は言葉「admin」を暗号化したいとしましょうたとえばSHA256暗号化と復号化(Python 2.7) - 同じ単語だが異なるハッシュ

def decrypt(): 
    print "Enter hash for decryption: \n" 
    rec = raw_input() 
    print "Enter path of wordlist" 
    list = raw_input() 
    wordl=open(list,"r") 
    wordk = wordl.readlines() 
    for w in wordk: 
     w = hashlib.sha256(w).hexdigest() 
     if rec.lower() != w: 
      print "Not this " + w 
     elif rec.lower() ==w: 
      print "Found ! " + w 
      break 
     else: 
      print "Nothing found ! " 

:辞書に基づいて、私は解読するために使用しています

def encrypt(): 
    print "Enter string for encryption: \n" 
    rec = raw_input() 
    enkr =hashlib.sha256(rec).hexdigest() 
    print enkr 

とコードこれです。私は、このハッシュ8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918 を取得し、私は復号化するとき、私は、同じ機能を持つこの fc8252c8dc55839967c58b9ad755a59b61b67c13227ddae4bd3f78a38bf394f7 と私の質問は、なぜ私は取得しています2つの異なるハッシュを取得しますか?敬具、Khan

+0

バックティックベースの構文は、コードの長さが1行未満の文字列を整形するための構文です。複数行のブロックの場合は、各行を4つのスペースでインデントするコードを選択した後、エディタで '{}'ボタンを使用するか、スペースを自分で追加してください。 –

+2

「暗号化」と「復号化」はどちらも間違っていて混乱しているため、何をしているのか説明しないでください。 'readlines'から抜け出した文字列の最後から改行を取り除いてください。読み込み行には、raw_inputは含まれていません。 – pvg

+0

SHA 256は暗号化されていません。 – user2357112

答えて

3

8c69…a918"admin"のSHA256ハッシュです。

fc82…94f7は、"admin\n"のSHA256ハッシュです。

file.readlines()には、読み込んだ各行の末尾に改行があります。これを削除するには、w.rstrip("\n")を使用します。

+0

ありがとう、今はすべてがクリアです! – Djehenghizz

1

rec = raw_input()に改行がありません。

一方、for w in wordk:によって反復された各行には改行があります。

したがって、rstrip("\n")に行を付けるか、splitlines()を使用して、ハッシュを実行する前に最後の改行文字を取り除く必要があります。

+0

ありがとう、私は今理解しています。 – Djehenghizz