如果您使用带有Google App Engine的webapp2,您可以看到只有一种方法可以使用“create_user”方法创建用户[auth / models.py line:364]
但该方法调用“security.generate_password_hash”方法,其中不可能使用SHA 512
Q1:我想知道用webapp2和App Engine Python创建SHA 512密码的最佳方法是什么?
Q2:好主意使用SHA 512而不是webapp2(SHA1)提供的加密,还是足够了?
答案 0 :(得分:2)
如您所见,默认的User模型不提供任何方法来自定义正在使用的哈希函数。您可以将其子类化并重新定义有问题的方法以获取哈希参数,或使用webapp2项目提交功能请求。
Webapp2的密码散列有更大的问题,因为它不会进行密码拉伸。虽然它可选地(!)为哈希值加盐,但它不会迭代它,使得暴力攻击比攻击者应该更加实用。它应该实现一个正确的密码原语,如PBKDF2,SCrypt或BCrypt。
要回答关于散列函数相对强度的问题,而SHA1显示出一些弱点,没有人成功生成碰撞,更不用说原像了。此外,HMAC结构可以产生安全的HMAC,即使具有抵抗冲突攻击的弱哈希函数;可以说甚至MD5都可以在这里工作。
当然,攻击只会变得更好,永远不会更糟,所以为未来做好准备是个好主意。但是,如果你担心安全性,那么你应该更加关注缺乏拉伸而不是哈希函数的选择。如果您真的担心安全性,那么您不应该自己进行身份验证 - 您应该使用Users API或OAuth,这样其他人就可以安全地存储密码。