1

最後に 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

誰にも何か提案がありますか?

4

1 に答える 1

0

ああ、問題を見つけました...私はばかです。パスワードを間違って入力していました。

パスワードを繰り返し印刷しても、なんとか見逃してしまいました。

于 2013-03-10T14:53:42.793 に答える