PHP双向加密加密
答
这听起来像你想要使用单向密码散列而不是双向散列,双向加密。下面是最佳实践密码存储和验证的一个很好的例子:
要保存它:
$ userPasswordInput = $ _ POST [“密码”];
$盐= //理想的是,生成一个随机并将其保存到该数据库,否则,使用保存到PHP文件
$密码= SHA1恒定($ $ userPasswordInput盐);
保存$密码(最好$盐)到数据库。比较时,连接salt和用户输入,将其加密(或无论哪种加密),然后将其与保存的(加密的+盐渍的)密码进行比较。
+0
我这样做会用于加密,但。我无法解密它,并使用$ salt获取密码? – Daniel 2010-09-21 09:33:39
答
我这样做的:
创建一个$用户+ $密码
$saltedHash = md5($salt.$password);
现在你有一个加密的密码($ saltedHash)将其保存到数据库。
如果有人尝试登录,则对输入的密码进行相同操作,并将其与db中的密码进行比较。
答
最简单的方法(尽管在存储方面非常浪费)是生成一个随机字符串并将其异或为密码。 (正如有人已经指出的那样,这被称为密钥,而不是盐。)这称为one-time pad。顾名思义,您不能重复使用相同的密钥来输入多个密码。
使用相同密钥时,加密数据始终可以解密。这就是[加密的定义](http://en.wikipedia.org/wiki/Encryption)。我想你的意思是[密码哈希](http://en.wikipedia.org/wiki/Cryptographic_hash_function)。 – Gumbo 2010-09-21 09:45:39