1
好吧,自從我上次使用Python以來,我一直在等一會兒,所以我的知識有點生疏。一般來說,我有一個關於getpass模塊和raw_input()和python字符串的問題。str和getpass輸出之間的區別
我正在使用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)
所以這顯然是行不通的。注意:我也嘗試過的STR()輪的raw_input
最後我的代碼:
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
任何人有什麼建議嗎?
比較字符串的'repr()';匹配長度並不意味着匹配的內容。 'raw_input()'給你正常的字符串,正如你已經發現的那樣,這裏有其他的錯誤。 – 2013-03-10 14:18:25
當你說pycrypto時,你的意思是[this](https://pypi.python.org/pypi/pycrypto)包嗎?如果是這樣,什麼是AESDecrypt? – unutbu 2013-03-10 14:32:28
@unutbu查看已編輯的問題,瞭解AESDecrypt的功能。 – IainS 2013-03-10 14:48:02