Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何为这个散列函数生成Salt?_C#_Hash - Fatal编程技术网

C# 如何为这个散列函数生成Salt?

C# 如何为这个散列函数生成Salt?,c#,hash,C#,Hash,我正在使用SO主题中的以下哈希函数。如何以字节数组格式生成salt值 static byte[] GenerateSaltedHash(byte[] plainText, byte[] salt) { HashAlgorithm algorithm = new SHA256Managed(); byte[] plainTextWithSaltBytes = new byte[plainText.Length + salt.Length]; for (int i = 0;

我正在使用SO主题中的以下哈希函数。如何以字节数组格式生成salt值

static byte[] GenerateSaltedHash(byte[] plainText, byte[] salt)
{
  HashAlgorithm algorithm = new SHA256Managed();

  byte[] plainTextWithSaltBytes = 
    new byte[plainText.Length + salt.Length];

  for (int i = 0; i < plainText.Length; i++)
  {
    plainTextWithSaltBytes[i] = plainText[i];
  }
  for (int i = 0; i < salt.Length; i++)
  {
    plainTextWithSaltBytes[plainText.Length + i] = salt[i];
  }

  return algorithm.ComputeHash(plainTextWithSaltBytes);            
}
静态字节[]生成altedhash(字节[]明文,字节[]盐)
{
HashAlgorithm算法=新的SHA256Managed();
字节[]明文带altbytes=
新字节[plainText.Length+salt.Length];
for(int i=0;i
像MD5、SHA-1甚至SHA-256这样的快速散列算法都不是散列密码的好选择,因为它们太快了,而且很容易被强制执行。使用普通硬件可以计算每秒的值

相反,您可以使用慢键派生函数,如BCrypt或PBKDF2。CSharp对PBKDF2有本机支持,它可以通过Rfc2898DeriveBytes类实现,您可以找到一个示例


这也很容易使用。人们通常不确定使用这样的库是否安全,但没有理由不使用它。只要库返回正确的值并正确生成salt,就可以了,因为安全性来自算法,而不是实现。

该主题在C中没有提供任何代码来进行哈希运算,因此对我没有任何用处。