我知道这可能是一个常见的问题,网上有很多关于为密码散列生成安全盐的文章。到目前为止,我已经选择 mcrypt_create_iv 通常用于加密的初始化向量,它可以用于安全地创建salt,尤其是在用于 MCRYPT_DEV_RANDOM 时。
出于某种原因,尽管人们成功使用它,但每当我使用时:
$Salt = mcrypt_create_iv(22, MCRYPT_DEV_RANDOM);
将其应用于哈希,然后将其单独输入到数据库中。当回来并进行身份验证并将它们放在一起时...它似乎永远不会正常工作。
mcrypt_create_iv 函数生成的某些字符是否与 crypt 不兼容?因为第二个我使用了一个有点明文的盐,无论是否从安全源生成..它工作正常。但我想利用 mcrypt 使用的特殊字符。
(另外,我在crypt上使用$ 6 $算法,因此盐只需要16个字节)
任何帮助将不胜感激!
谢谢:)
答案 0 :(得分:1)
我建议使用password_hash()
系列函数,因为它们会完全为您完成散列。它们还提供了未来兼容性,并且通常是 推荐的用于在PHP中处理密码的方法。
在此答案中详细了解如何使用它们: https://stackoverflow.com/a/6337021/5086233
关于你原来的问题:我怀疑某个地方有一个字符集问题,但是没有看到处理哈希的代码(和表定义),这是不可能的。