生成/存储/读取安全mcrypt的盐

问题描述:

我知道这可能是有点一个共同的问题,也有跨网有关生成安全的盐进行口令散列处理这么多的文章。到目前为止,我已经拿起mcrypt_create_iv一般用于加密的初始化向量,它可以被用来反对MCRYPT_DEV_RANDOM使用时安全地创建特别是盐。生成/存储/读取安全mcrypt的盐

出于某种原因,尽管有它成功的人,每当我用:

$Salt = mcrypt_create_iv(22, MCRYPT_DEV_RANDOM); 

它适用于散,然后分别将其输入到数据库。当回来和认证并把它们放在一起...它似乎从来没有正常工作。

是否有由mcrypt_create_iv功能不与隐窝兼容产生一些字符?因为第二个我使用一个有点明文盐,无论是否从安全的源生成或没有..它工作正常。但是我想利用特殊字符mcrypt的用法。

(另外,我现在用的是$ 6 $算法隐窝所以只有16盐所需的字节)

任何帮助,将不胜感激!

谢谢:)

我建议使用password_hash()家庭的功能,因为这些将完全照顾哈希的为您服务。他们还提供未来兼容性,并且通常是推荐的用于在PHP中处理密码的方法。

了解更多关于如何在这个答案使用它们: https://*.com/a/6337021/5086233

至于你原来的问题:我怀疑一个字符集问题的地方,但没有看到代码(表定义)来处理,这是不可能的散列告诉。

+0

干杯。根据php.net文章,我的服务器使用PHP 5.4,它的版本是5.5以上。无论如何,你的帖子无论如何都是有帮助的。我将数据库中的排序规则更改为utf-unicode-ci,就在盐上,现在它可以工作:) – Hazzard

+1

有一个兼容性层,您可以使用它,并将其链接到我发布的答案中。这与内置功能的功能相同。 ;) – ChristianF

+0

不客气。请记住点赞和/或接受答案。 :) – ChristianF