栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

C#中的哈希和盐密码

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/465616.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号