C#中的哈希和盐密码

C#中的哈希和盐密码,第1张

C#中的哈希和盐密码

实际上,对于字符串转换来说,这有点奇怪-
成员资格提供程序所做的就是将其放入配置文件中。哈希和盐是二进制Blob,除非要将它们放入文本文件,否则无需将它们转换为字符串。

在我的《Beginning ASP.NET
Security》
一书中(最后,借口是这本书的借口),我执行以下 *** 作

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); }

盐的生成就是这个问题的例子。您可以使用将文本转换为字节数组

Encoding.UTF8.GetBytes(string)
。如果必须将哈希转换为字符串表示形式,则可以使用
Convert.Tobase64String
并将
Convert.Frombase64String
其转换回。

您应该注意,不能在字节数组上使用相等运算符,它会检查引用,因此您应该简单地遍历两个数组,检查每个字节,从而

public static bool CompareByteArrays(byte[] array1, byte[] array2){  if (array1.Length != array2.Length)  {    return false;  }  for (int i = 0; i < array1.Length; i++)  {    if (array1[i] != array2[i])    {      return false;    }  }  return true;}

始终 为每个密码使用新的盐。盐不必保密,可以与哈希表本身一起存储。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5441111.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-11
下一篇 2022-12-11

发表评论

登录后才能评论

评论列表(0条)

保存