我正在研究asp.net和php的基本安全性,我已经能够在asp.net上实现该应用程序了,我想做的就是用php提出同样的东西
这是我用于我的asp.net应用程序的代码,如果可能的话我想转换为php:
public static byte[] GenerateSalt()
{
const int MinSaltSize = 4;
const int MaxSaltSize = 8;
// Generate a random number to determine the salt size.
Random random = new Random();
int saltSize = random.Next(MinSaltSize, MaxSaltSize);
// Allocate a byte array, to hold the salt.
byte[] saltBytes = new byte[saltSize];
// Initialize the cryptographically secure random number generator.
RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
// Fill the salt with cryptographically strong byte values.
rng.GetNonZeroBytes(saltBytes);
return saltBytes;
}
我还想知道在php中用于rng.GetNonZeroBytes()的函数
然后我会使用base64_encode / base64_decode作为数据。先生/女士,你的答案会有很大的帮助。谢谢++:D
答案 0 :(得分:1)
mcrypt_create_iv(size, MCRYPT_DEV_URANDOM)
应该没问题。它几乎相当于rng.GetBytes
。
使用DEV_URANDOM
至关重要,DEV_RANDOM
非常慢,因为安全性可以忽略不计,RAND
不安全。
不确定为什么你想要非零字节。在Base64编码之后,零字节将是正常的可打印字符。
我建议使用base64_encode(mcrypt_create_iv(9, MCRYPT_DEV_URANDOM))