我想使用安全的PRNG生成盐.我已经读过,最新和推荐的实现方法是创建一个RandomNumberGenerator实例GetBytes.但是,我不太确定应该遵循哪种方式:
// CODE 1
private static byte[] GenerateSaltNewInstance(int size)
{
using (var generator = RandomNumberGenerator.Create())
{
var salt = new byte[size];
generator.GetBytes(salt);
return salt;
}
}
// CODE 2
private static RandomNumberGenerator rng = RandomNumberGenerator.Create();
private static byte[] GenerateSaltStatic(int size)
{
var salt = new byte[size];
rng.GetBytes(salt);
return salt;
}
Run Code Online (Sandbox Code Playgroud)
有什么不同?基本上在这个方法的第一个版本中,我RandomNumberGenerator每次都在创建一个新的实例.在第二个我使用初始化一次的静态实例.
我应该选择哪一个?在文章中,我看到人们遵循第一条路径,但我不认为为什么创建RandomNumberGenerator10000次会更好:P每次使用新实例是否更安全?
| 归档时间: |
|
| 查看次数: |
2059 次 |
| 最近记录: |