我有這個代碼的問題:無法獲得哈希()函數在Python 3.2.2工作
print('insert password below to get a hash')
pass = int(input('Input passowrd> ')
hash(pass)
input()
我只是得到一個錯誤,當我嘗試運行此,我試過help(hash)
在python shell中,閱讀文檔,儘可能地使用Google搜索,但是我無法使其正常工作: -/
問題是什麼?
我有這個代碼的問題:無法獲得哈希()函數在Python 3.2.2工作
print('insert password below to get a hash')
pass = int(input('Input passowrd> ')
hash(pass)
input()
我只是得到一個錯誤,當我嘗試運行此,我試過help(hash)
在python shell中,閱讀文檔,儘可能地使用Google搜索,但是我無法使其正常工作: -/
問題是什麼?
我覺得你有兩個問題。
首先,pass- 字通常不是整數,所以你要int
通話將最有可能引發異常。
你可能想這樣的:
pass = input('Input password> ')
其次,hash
功能進行快速比較的目的對象返回hash code。這不是cryptographic hash function。考慮使用像常用的MD5算法或(最好)更安全的算法,如SHA-2算法家族。
您可以使用hashlib
生成加密安全的哈希。例如:
>>> import hashlib
>>> hashlib.md5('admin'.encode('utf-8')).hexdigest()
'21232f297a57a5a743894a0e4a801fc3'
>>> hashlib.sha256('admin'.encode('utf-8')).hexdigest()
'8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918'
根據您的需求,您可能還需要考慮使用salt以進一步保護密碼。
將來,這將有助於發佈您遇到的錯誤。我敢打賭這是一個ValueError
,它抱怨說密碼不能轉換爲int
,這是非常正確的。
首先轉換爲整數沒有意義; hash
作品蠻好的字符串:
print('Input password below to get a hash:')
pass = input('Input password> ')
print(hash(pass))
input()
你的代碼的作品寫的,但它可能不是你所期待的(整數的散列僅僅是整數本身)。試試這個:
print('insert password below to get a hash')
pass_str = input('Input password: ')
h = hash(pass_str)
另外,如果你存儲的密碼的哈希值,並希望它是安全的,請務必使用強加密哈希如在hashlib module發現:
>>> pass_str = 'the phrase that pays'
>>> hashlib.sha256(pass_str.encode()).hexdigest()
'a91ba2a03eb9772b114e6db5c5a114d8a9b3ba419a64cdde9606a9151c8a352e'
pass
是一個語句,您不能在Python中爲該名稱指定一個變量。
>>> pass = 1
SyntaxError: invalid syntax
>>>
你應該告訴我們你得到了什麼錯誤。 – middus
我愛如何沒有人提到'通過'是一個保留字(因此不是一個有效的標識符)。所以甚至突出它! – delnan