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