我需要重新实现PHP函数openssl_random_pseudo_bytes
的行为,这是根据其description:
openssl_random_pseudo_bytes - 生成伪随机字节串
因为它只是伪随机字节串,并且因为我需要它的十六进制表示,所以我只能使用this function。但还有其他参数:
crypto_strong
如果传入函数,这将包含一个布尔值 确定所使用的算法是否为加密算法的值 强大的",例如,安全使用GPG,密码等。如果它是真的 做了,否则为FALSE
我的问题的核心是:这个crypto_strong参数究竟是什么?我应该如何正确地重新实现这种行为?
NB!我可以将java.security.SecureRandom()
课程用于此目的吗?
答案 0 :(得分:2)
函数openssl_random_pseudo_bytes($length, &$crypto_strong)
在第二个参数中指示接收指示生成的字节是否加密强。
此代码似乎用作:
openssl_random_pseudo_bytes(XX, true)
这没有意义,因为它似乎被视为输入参数而不是输出参数。
在没有良好熵源的(嵌入式)设备上为RNG提供种子,可能是该函数将crypto_strong
参数设置为false。显然,不可能将true
设置为false
,这样就会失败;即这是PHP代码中的一个错误(显然没有被PHP本身的相当宽松的类型系统捕获)。
PHP程序员可能试图表明需要加密强大的PRNG。所以new SecureRandom()
似乎确实是最好的方式。