我需要提高我们网站的安全性,目前正在使用此处的指南:http://crackstation.net/hashing-security.htm,以及此处生成的随机密码:https://defuse.ca/generating-random-passwords.htm。我认为两者都使用函数mcrypt_create_iv()
来生成随机字节(或位?),但由于某种原因,我在CentOS 6下安装php-mcrypt时遇到错误。幸运的是,第一个链接表示{{1} }是一个CSPRNG(以及PHP文档和其他来源也支持该声明),并且可以在PHP 5.4的当前服务器安装上使用,所以我别无选择,只能使用它。考虑到这些,我想问以下问题:
直接代码替换是否足以影响安全性? (也就是说,只需将openssl_random_pseudo_bytes()
的来电替换为mcrypt_create_iv()
即可?)
关于代码中提到的常量(http://crackstation.net/hashing-security.htm#properhashing),指南说“确保你的盐至少和你的盐一样长。哈希函数的输出。“假设openssl_random_pseudo_bytes()
和PBKDF2_SALT_BYTES
都设置为24个字节,我是正确的,因为PBKDF2_HASH_BYTES
函数的输出只有24个字节,而不是32个(对于256位),因为底层使用的算法是pbkdf2()
? (是的,我也在使用键拉伸。)在相关的说明中,24字节是好的,还是应该增加/减少,它会产生什么影响?
高级感谢那些愿意回答的人。
答案 0 :(得分:6)
openssl_random_pseudo_bytes($len, true)
和mcrypt_create_iv($len, MCRYPT_DEV_RANDOM)
)。PBKDF2_SALT_BYTES
仅用于测试函数create_hash()
,而不用于pbkdf2()
本身。所以你只需要使用那些CSPRNG实现自己的salt生成函数。