最後に Python を使用してから少し経ちましたので、私の知識は少しさびています。getpass モジュールと raw_input() および python 文字列全般に関して質問があります。
私はpycryptoモジュールを使用しています。SHA256 を使用してハッシュされたパスワード文字列があり、そのダイジェストを使用して AES 暗号を復号化します。
次のコードが機能します。
password = "applesandpairsstairs"
print len(password)
print type(password)
plaintext = AESDecrypt(ciphertext, password, iv)
print "Plaintext: %s\n" % plaintext
出力が得られます:
20
<type 'str'>
Plaintext: This is some test data for use.
明らかに、プログラムにパスワードを入れるのは少しばかげているので、最初に raw_input() に切り替えました。
password = raw_input("Enter Password: ")
print len(password)
print type(password)
plaintext = AESDecrypt(ciphertext, password, iv)
print "Plaintext: %s\n" % plaintext
これが印刷されると、次のようになります。
20
<type 'str'>
Plaintext: (Load of ciphertext characters)
したがって、明らかに機能しません。注意私はまた、raw_inputの周りにstr()を試しました
最後に私はコードを持っています:
password = getpass.getpass("Enter Password: ",sys.stderr)
print len(password)
print type(password)
raw_input と同じものを出力します。
AESDecrypt は、ハッシュと復号化を呼び出して平文を返すメソッドです。
hash = SHA256.new()
hash.update(password)
key = hash.digest()
obj = AES.new(key, AES.MODE_CBC, iv)
plaintext = obj.decrypt(ciphertext)
return plaintext
誰にも何か提案がありますか?