8

我需要提高我们网站的安全性,目前正在使用此处的指南:http: //crackstation.net/hashing-security.htm,以及此处的随机密码生成:https ://defuse.ca/generating -随机密码.htm。我收集到两者都使用mcrypt_create_iv()生成随机字节(或位?)的函数,但由于某种原因,我在 CentOS 6 下安装 php-mcrypt 时遇到错误。幸运的是,第一个链接说这openssl_random_pseudo_bytes()是一个 CSPRNG(以及 PHP 文档和其他来源也支持该声明),并且在当前服务器安装的 PHP 5.4 上可用,所以我目前别无选择,只能使用它。考虑到这些,我想问以下问题:

  1. 直接代码替换是否足够而不影响安全性?(也就是说,只需替换对 to 的调用就mcrypt_create_iv()可以了openssl_random_pseudo_bytes()吗?)

  2. 关于代码中提到的常量(http://crackstation.net/hashing-security.htm#properhashing),指南说“[m]确保你的盐至少和哈希函数的输出一样长。” 我是否正确假设PBKDF2_SALT_BYTESandPBKDF2_HASH_BYTES都设置为 24 字节,因为pbkdf2()函数的输出只是 24 字节,而不是 32(对于 256 位),因为使用的底层算法是sha256?(是的,我也在使用键拉伸。)在相关说明中,24 字节是否可以,或者应该增加/减少,这会产生什么影响?

高级感谢那些将回答的人。

4

1 回答 1

8
  1. 我认为安全性不会受到影响,因为这两个函数都只是密码安全的伪随机数生成器(NB:openssl_random_pseudo_bytes($len, true)mcrypt_create_iv($len, MCRYPT_DEV_RANDOM))。
  2. PBKDF2_SALT_BYTES仅在测试功能中使用create_hash(),而不在pbkdf2()其本身中使用。所以你只需要使用这些 CSPRNG 实现你自己的盐生成功能。
于 2012-09-03T15:13:11.053 回答