使用PhP加密存储在MySql中的密码的最佳做法是什么?

我正在寻求如何使用PHP安全地存储MySQL中的密码的建议.

忽略PHP本身的限制,我想了解更多关于盐渍,散列和加密这些坏男孩的信息.

显然,人们会继续使用弱密码,除非被强制使用,否则我将如何存储对我很重要的东西.我的用户的密码比数据库本身要重要得多,因此我想保持这样的一种方式,任何脚本小孩尝试反向都将是艰苦和单调的.显然,尽可能的努力,任何东西都可以被打败,但我不介意使这个特别麻烦.

我们正在看两种情况.

>小孩有完整的数据库副本.
>小孩有一个用于制作密码的PHP的完整副本和数据库.

关于这个话题的任何建议都是非常感激的.

最佳答案
使用bcrypt.如果有人拥有您的数据库的用户表,那么他们可以使用暴力/彩虹表/等来他们的心脏的内容.即使使用盐,如果您使用MD5或其他一些快速哈希算法(这不是解决这个问题的方法);它只是一个时间的问题,才能被破解.

任何众所周知和广泛支持的散列算法将会有同样的基本“缺陷”(如果您可以称之为“真正的定义”).不同之处在于,当执行散列操作时,bcrypt作为糖蜜缓慢,使得暴力攻击的效果更差.

关于bcrypt的优点,其他方法的危险以及一般密码安全难度的绝对讨论见this thread.许多人对这种事情的了解比我更了解很多希望可以帮助您了解更多的问题.

转载注明原文:使用PhP加密存储在MySql中的密码的最佳做法是什么? - 代码日志