我只是在python中創建一個新的應用程序來註冊。 我保存了數據庫和用戶創建成功的所有字段,但密碼保存與註冊時填寫的相同。 如何加密或使用python的默認函數作爲密碼。python密碼加密?
請給我推薦?
我只是在python中創建一個新的應用程序來註冊。 我保存了數據庫和用戶創建成功的所有字段,但密碼保存與註冊時填寫的相同。 如何加密或使用python的默認函數作爲密碼。python密碼加密?
請給我推薦?
從用戶(並註冊)獲取密碼以加密密碼後進行散列密碼。
import hashlib
m = hashlib.sha1()
m.update("My users' password here")
m.digest()
編號:http://docs.python.org/2/library/hashlib.html#module-hashlib
對於實際的加密,你可以嘗試M2Crypto或PyCrypto。這些可能是你正在尋找的;但是,也有其他的方法來混淆您密碼的平均用戶:
(如果你想閱讀一些更多的答案,以什麼加密方法可能最適合您,看看這個有點關係SO後:Recommended Python cryptographic module?
hashlib將提供各種散列算法(如 「SHA1,SHA224,SHA256,SHA384和SHA512」。)一個簡單的例子:
import hashlib
enc = hashlib.md5()
enc.update("Somerandompassword")
print enc.hexdigest()
,這將打印您的MD5 「Somerandompassword」: c5532f9e756b4583db4c627c8aa7d303
然而,對於(BASE64)編碼,例如,嘗試:
import base64
enc = base64.b64encode("Somerandompassword")
和解碼
dec = base64.b64decode("U29tZXJhbmRvbXBhc3N3b3Jk")
print dec
會打印:Somerandompassword
+1 bcrypt是最好的選擇。在Django(這是我懷疑作者正在使用,基於他的標籤),這被稱爲[''django.contrib.auth.hashers.BCryptPasswordHasher'](https://docs.djangoproject.com/en/dev/專題/認證/密碼/) – 2013-02-11 07:58:46
你應該散列密碼,下面的代碼根據settings.py你PASSWORD_HASHERS散列原始輸入密碼
from django.contrib.auth.hashers import make_password
pass = make_password(raw_pass) # hashing is done here
user.set_password(pass)
不要自己實現這樣的東西,否則你可能會做錯。
對於密碼存儲,使用一些可逆編碼或對稱加密或來自hashlib的簡單散列或甚至隨機散列的散列都是當今所有主要的失敗。
如果您使用的是django,請使用django提供的強大算法(通常爲bcrypt,pbkdf2,sha512_crypt之一)。
不使用django時:使用passlib - 閱讀其文檔後。
你不應該加密密碼,你應該對它們進行散列。 https://docs.djangoproject.com/en/dev/topics/auth/passwords/ – 2013-02-11 07:56:15
閱讀此:http://www.tarsnap.com/scrypt/scrypt.pdf – akira 2013-02-11 08:05:43