首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >最佳加密技术

最佳加密技术
EN

Stack Overflow用户
提问于 2013-07-09 19:15:51
回答 4查看 25.6K关注 0票数 1

我使用的是PHP。我想要一个安全快速的密码加密系统。将密码散列一百万次可能会更安全,但也会更慢。如何在速度和安全性之间取得良好的平衡?我想知道在php中最好的加密方法以及如何应用它。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-07-09 19:18:08

我推荐使用新的PHP 5.5 password API。它提供了一种安全的方式来散列密码,同时又足够快。

如果您没有可用的PHP5.5,有一个可以与PHP5.5一起使用的polyfillhttps://github.com/ircmaxell/password_compat

票数 11
EN

Stack Overflow用户

发布于 2013-07-09 19:17:22

使用PHPass,它是一个优秀的哈希框架,非常容易使用!

票数 6
EN

Stack Overflow用户

发布于 2013-07-09 19:23:13

使用SHA512 http://php.net/manual/en/function.hash.php。SHA512未被破解。我建议使用salt:在散列之前附加到密码的一些随机字符串。这可以防止预先计算的彩虹表,但不能防止字典攻击,如果攻击者获得了对包含密码和盐的数据库的访问权限。SHA512(password + salt) --> hash检查密码时,在数据库中存储hash和salt,检索用户对应的salt,将其与password连接,hash并与存储的hash进行比较。点击此处阅读:How long to brute force a salted SHA-512 hash? (salt provided)

回想一下你的问题,特别是你的陈述“哈希密码一百万次可能更安全,但也更慢。如何在速度和安全性之间取得良好的平衡”。实际上,重复的散列将使计算字典中的所有散列的计算成本过高,从而保护您免受字典攻击。我不会在这里教你任何东西。从我给你的第一个链接开始,计算一个SHA512散列花费了大约46毫秒,这是一个相对较长的过程。当你处于军备竞赛环境中时,我可以立即想到以下因素,这些因素可能会影响你的决定:-不断增加的计算能力(更多的CPU核心和GPU计算)-随着时间的推移改进的算法-攻击者可用的金钱数量-如果破解了你的网站(如果破解了,就不值得努力)- CPU能力的数量作为一个经验法则,我会尽可能多次地散列,以免影响我的网站性能。考虑到每秒的登录次数,您可以粗略地计算出您可以在不影响站点性能的情况下花费多少CPU功率。

最后一条评论:假设黑客已经访问了包含用户名和散列密码的表,那么在这一点上,您可能会更担心他们可能在您的网站上做的所有坏事。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17546826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档