【问题标题】:Generate/storing/reading Secure MCRYPT Salt生成/存储/读取安全 MCRYPT 盐
【发布时间】:2017-02-12 04:56:27
【问题描述】:

我知道这可能是一个常见的问题,网上有很多关于为密码散列生成安全盐的文章。到目前为止,我发现 mcrypt_create_iv 通常用于加密的初始化向量,它可以用于安全地创建盐,尤其是在用于 MCRYPT_DEV_RANDOM 时。

出于某种原因,尽管人们使用它取得了成功,但每当我使用它时:

$Salt = mcrypt_create_iv(22, MCRYPT_DEV_RANDOM);

将其应用于哈希,然后将其单独输入到数据库中。当回来进行身份验证并将它们放在一起时......它似乎永远无法正常工作。

mcrypt_create_iv 函数生成的某些字符是否与 crypt 不兼容?因为第二个我使用了某种明文盐,无论是否从安全来源生成......它工作正常。但我想利用 mcrypt 使用的特殊字符。

(另外,我在 crypt 上使用 $6$ 算法,所以盐只需要 16 个字节)

任何帮助将不胜感激!

谢谢:)

【问题讨论】:

    标签: php mysql salt mcrypt crypt


    【解决方案1】:

    我建议使用password_hash() 系列函数,因为它们会完全为您处理散列。它们还提供未来兼容性,通常是在 PHP 中处理密码的推荐方法。

    在此答案中阅读有关如何使用它们的更多信息: https://stackoverflow.com/a/6337021/5086233

    至于您最初的问题:我怀疑某处存在字符集问题,但如果没有看到处理哈希的代码(和表定义),则无法判断。

    【讨论】:

    • 干杯。我的服务器使用 PHP 5.4,根据 php.net 文章,它是 5.5 或更高版本。不管怎样,你的帖子还是有帮助的。我将数据库中的排序规则更改为 utf-unicode-ci 就在盐上,它现在可以工作了:)
    • 您可以使用一个兼容层,在我发布的答案中链接到该层。这与内置函数的功能相同。 ;)
    • 不客气。请记住投票和/或接受答案。 :)
    • @Hazzard - 这是compatibility pack 的链接,它只是一个独立的 php 文件。使用 password_hash() 函数,您不必单独存储盐。
    猜你喜欢
    • 2017-12-11
    • 2016-04-01
    • 2012-07-27
    • 1970-01-01
    • 2021-09-21
    • 2013-05-11
    • 2012-04-28
    • 2011-12-29
    • 2017-01-10
    相关资源
    最近更新 更多