C#的哈希

哈希算法是啥?哈希英文hash,是一种数学算法,它能把任意长度的值转换成固定长度的值,而且映射关系唯一并算法不可逆,理论上不拿到原值,是不可能得到对应的哈希值的,但是这都是历史了,中国科学院的王小云已经初步破解了基于哈希算法的MD5和SHA1算法,所以.NET库里面能够安全使用的估计只有SHA256Managed、SHA384Managed、SHA512Managed了,不过这些东西也只是基于SHA1增加复杂度而已,估计也扛不了多长时间了,我建议大家现在直接用SHA512Managed好了。
SHA512Managed生成512位哈希值,使用方法很简单:
private   string  SHA512( string  strPlain)
{
 SHA512Managed sha512
= new  SHA512Managed();
 
string  strHash = string .Empty;
 
byte [] btHash = sha512.ComputeHash(UnicodeEncoding.Unicode.GetBytes(strPlain));
 
for ( int  i = 0 ;i < btHash.Length;i ++ )
 {
  strHash
= strHash + Convert.ToString(btHash[i], 16 );
 }
 
return  strHash;
}

 
C# 提供了多种哈希函数算法,可以根据需求选择使用。以下是其中几种常用的哈希函数算法: 1. MD5:使用 128 位哈希值,适用于校验数据完整性。 ```csharp using System.Security.Cryptography; public string ComputeMD5Hash(string input) { using (MD5 md5 = MD5.Create()) { byte[] inputBytes = Encoding.UTF8.GetBytes(input); byte[] hashBytes = md5.ComputeHash(inputBytes); StringBuilder sb = new StringBuilder(); for (int i = 0; i < hashBytes.Length; i++) sb.Append(hashBytes[i].ToString("x2")); return sb.ToString(); } } ``` 2. SHA1:使用 160 位哈希值,适用于校验数据完整性。 ```csharp using System.Security.Cryptography; public string ComputeSHA1Hash(string input) { using (SHA1 sha1 = SHA1.Create()) { byte[] inputBytes = Encoding.UTF8.GetBytes(input); byte[] hashBytes = sha1.ComputeHash(inputBytes); StringBuilder sb = new StringBuilder(); for (int i = 0; i < hashBytes.Length; i++) sb.Append(hashBytes[i].ToString("x2")); return sb.ToString(); } } ``` 3. SHA256:使用 256 位哈希值,适用于安全敏感的数据。 ```csharp using System.Security.Cryptography; public string ComputeSHA256Hash(string input) { using (SHA256 sha256 = SHA256.Create()) { byte[] inputBytes = Encoding.UTF8.GetBytes(input); byte[] hashBytes = sha256.ComputeHash(inputBytes); StringBuilder sb = new StringBuilder(); for (int i = 0; i < hashBytes.Length; i++) sb.Append(hashBytes[i].ToString("x2")); return sb.ToString(); } } ``` 4. SHA512:使用 512 位哈希值,适用于安全敏感的数据。 ```csharp using System.Security.Cryptography; public string ComputeSHA512Hash(string input) { using (SHA512 sha512 = SHA512.Create()) { byte[] inputBytes = Encoding.UTF8.GetBytes(input); byte[] hashBytes = sha512.ComputeHash(inputBytes); StringBuilder sb = new StringBuilder(); for (int i = 0; i < hashBytes.Length; i++) sb.Append(hashBytes[i].ToString("x2")); return sb.ToString(); } } ``` 需要注意的是,哈希函数算法不是加密算法,只能用于校验数据完整性。如果需要加密数据,应该使用加密算法,如 AES、RSA 等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值