在存储到数据库之前加密密码?

Big*_*ike 6 php mysql password-protection

我有一个密码通过php脚本user.php从我的iPhone应用程序传递到数据库.

变量$ pass由以下内容填充:

$pass = str_replace("'", "", $_REQUEST['pass']);
Run Code Online (Sandbox Code Playgroud)

如何在插入数据库之前对其进行加密?我已经阅读了一些关于不同技术的内容,但寻找管理它的最佳方法.

谢谢大家.

Chr*_*ris 7

使用php的crypt库.Md5不是加密,而是哈希.

另外,加密你的密码. 为什么?


Ric*_*kir 7

虽然下面的答案在技术上仍然是正确的,但php有关于要使用的散列算法的新建议.他们的建议,从php> = 5.5.0开始,是使用password_hashpassword_verify函数来散列和验证散列密码.作为额外的好处,这些函数会自动将个性化的salt作为返回哈希的一部分,因此您无需明确担心.


如果您不关心检索实际密码的值(来自数据库加密值),则可以在其上运行单向散列算法(例如sha1).此函数将返回特定长度的字符串(哈希),该字符串不能用于查找原始字符串(理论上).两个不同的字符串可能会创建相同的哈希(称为冲突),但这不应该是密码的问题.
例: $pass = sha1($_REQUEST['pass']);

有一点,为了使它更安全,可以在哈希中添加一个盐并再次运行哈希函数.这使得更难以恶意生成密码哈希,因为盐值仅在服务器端处理.
例: $pass = sha1(sha1($_REQUEST['pass']).sha1("mySalt@$#(%"));