PHP - 用openssl_random_pseudo_bytes()替换mcrypt_create_iv()

时间:2012-09-03 02:45:00

标签: php openssl mcrypt

我需要提高我们网站的安全性,目前正在使用此处的指南: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的当前服务器安装上使用,所以我别无选择,只能使用它。考虑到这些,我想问以下问题:

  1. 直接代码替换是否足以影响安全性? (也就是说,只需将openssl_random_pseudo_bytes()的来电替换为mcrypt_create_iv()即可?)

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

  3. 高级感谢那些愿意回答的人。

1 个答案:

答案 0 :(得分:6)

  1. 我认为安全性不会受到影响,因为这两个函数都只是加密安全的伪随机数生成器(NB:openssl_random_pseudo_bytes($len, true)mcrypt_create_iv($len, MCRYPT_DEV_RANDOM))。
  2. PBKDF2_SALT_BYTES仅用于测试函数create_hash(),而不用于pbkdf2()本身。所以你只需要使用那些CSPRNG实现自己的salt生成函数。