简单描述C#哈希值

借助于System.Security.Cryptography命名空间的密码资源,将非常容易产生与比较C#哈希值。因为所有的哈希函数都接收类型为 Byte() 的输入,因此可能需要将初始数据转换成一个字节数组才能够为它产生哈希值。欲为一个字符串值建立一个哈希值,请依下列步骤进行:

10年积累的网站制作、成都网站建设经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先做网站设计后付款的网站建设流程,更有靖州免费网站建设让你可以放心的选择与我们合作。

1、使用Using语句导入System、System.Security、System.Security.Cryptographic与System.Text命名空间,这样一来,您才不需要于程序代码中编写一长串的完整名称:

 
 
 
  1. using System.Drawing;  
  2. using System.Text;  
  3. using System.Windows.Forms;  
  4. using System.Security.Cryptography; 

2、声明一个字符串变量来持有您的初始数据,并声明两个字节数组(未定义大小)来持有初始字节与所产生出的C#哈希值:

 
 
 
  1. string sSourceData;  
  2. byte[] tmpSource;  
  3. byte[] tmpHash; 

3、使用 GetBytes() 方法(它是System.Text.ASCIIEncoding类的一部分)将您的初始字符串转换至一个字节数组中:

 
 
 
  1. SourceData = "MySourceData";  
  2. // 根据初始数据来建立一个字节数组  
  3. tmpSource = ASCIIEncoding.ASCII.GetBytes(sSourceData); 

4、通过调用MD5CryptoServiceProvider类的实例的ComputeHash方法来为您的初始数据计算出MD5哈希值。请注意,欲计算出另外一个哈希值,您必须建立该类的另外一个实例。

 
 
 
  1. // 根据初始数据计算出哈希值  
  2. tmpHash = new MD5CryptoServiceProvider().ComputeHash(tmpSource); 

5、tmpHash字节数组现在会获取您初始数据的哈希值(128位值=16字节)。将此显示或储存成一个十六进制字符串通常会非常有用,下列程序代码即是进行此项处理:

 
 
 
  1. lblHashResult.Text = sSourceData + "\n" + ByteArrayToString(tmpHash) + "\n";  
  2. private string ByteArrayToString(byte[] arrInput  
  3. {  
  4. StringBuilder sOutput = new StringBuilder(arrInput.Length);  
  5. for (int i = 0; i < arrInput.Length; i++){  
  6. sOutput.Append(arrInput[i].ToString("X2"));  
  7. }  
  8. return sOutput.ToString();  

6、通过上述程序代码,您便能够为初始数据产生出哈希值并以一个十六进制字符串来表示。接下来,我们要继续说明如何比较两个C#哈希值。为初始数据建立哈希值的目的之一,就是要提供一种方式来检查数据是否被更改过,或是不通过实际的值来比较两个值。不论是哪一种情况,您都需要比较两个哈希值。然而,如果两个哈希值皆已储存成十六进制字符串,则比较C#哈希值的操作将会更加简易。当然,也有可能两个哈希值都是以字节数组的形式存在。后续步骤的程序代码将延续先前步骤的程序代码,以便示范如何比较两个字节数组。

【编辑推荐】

  1. 浅谈C#开发WinForm
  2. C#静态构造函数简介
  3. C#实现ControlTemplate方法
  4. C#验证输入方法详解
  5. 浅析C#透明窗体

分享标题:简单描述C#哈希值
文章转载:http://www.mswzjz.cn/qtweb/news14/295814.html

攀枝花网站建设、攀枝花网站运维推广公司-贝锐智能,是专注品牌与效果的网络营销公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 贝锐智能