知识大全 C#中如何产生与比较哈希值

Posted 字节

篇首语:如果你等到每件事都确定是对的才去做,那你也许永远都成不了什么事。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 C#中如何产生与比较哈希值相关的知识,希望对你有一定的参考价值。

C#中如何产生与比较哈希值  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

    借助于System Security Cryptography命名空间的密码资源 将非常容易产生与比较哈希值 因为所有的哈希函数都接收类型为 Byte() 的输入 因此可能需要将初始数据转换成一个字节数组才能够为它产生哈希值 欲为一个字符串值建立一个哈希值 请依下列步骤进行 使用Using语句导入System System Security System Security Cryptographic与System Text命名空间 这样一来 您才不需要于程序代码中编写一长串的完整名称

  using System Drawing;using System Text;using System Windows Forms;using System Security Cryptography;

声明一个字符串变量来持有您的初始数据 并声明两个字节数组(未定义大小)来持有初始字节与所产生出的哈希值 string sSourceData;byte[] tmpSource;byte[] tmpHash; 使用 GetBytes() 方法(它是System Text ASCIIEncoding类的一部分)将您的初始字符串转换至一个字节数组中

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

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

  // 根据初始数据计算出哈希值tmpHash = new MD CryptoServiceProvider() ComputeHash(tmpSource);

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

  lblHashResult Text = sSourceData + \n + ByteArrayToString(tmpHash) + \n ; private string ByteArrayToString(byte[] arrInput)StringBuilder sOutput = new StringBuilder(arrInput Length);for (int i = ; i < arrInput Length; i++)sOutput Append(arrInput[i] ToString( X ));return sOutput ToString();

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

  sSourceData = NotMySourceData ;tmpSource = ASCIIEncoding ASCII GetBytes(sSourceData); byte[] tmpNewHash;bool bEqual = false; tmpNewHash = new MD CryptoServiceProvider() ComputeHash(tmpSource);

比较两个字节数组最直接了当的方式就是通过循环依序处理数组 以便一一比较两数组中的每一个元素 如果有任何元素不相同 或是两数组的大小不相同 则表示两值并不相等 保存与运行您的项目 以便查看根据第一个哈希值所建立的十六进制字符串 并确认新的哈希值是否 与初始的相同 完整的程序代码已编写在程序范例CH _DemoForm cs的Load事件处理函数中 请自行参考之 图 所示则是执行结果 this style width= ; onmousewheel = javascript:return big(this) src= /files/uploadimg/ / jpg > 图 cha138/Article/program/net/201311/12934

相关参考

知识大全 第五部分 查找[5]

   (五)散列(Hash)表    定义    哈希函数类似于数学中定义的函数每个值都能通过哈希函数算出对应值的  哈希表根据设定的哈希函数和处理冲突的方法将一组关键字

知识大全 浅谈C#中所谓的 “值类型”

浅谈C#中所谓的“值类型”  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在C#中相信大家对于值

知识大全 PHP与C#的值类型指向区别

PHP与C#的值类型指向区别  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  PH和C#的值拷贝区

知识大全 C#获取IPCONFIG返回值

C#获取IPCONFIG返回值  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在我们获取本机局域

知识大全 C#传值调用与引用调用

C#传值调用与引用调用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  usingSystem; 

知识大全 C#中如何让一个函数返回多个值

C#中如何让一个函数返回多个值  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  有两种方法  使用

知识大全 数据结构考研分类复习真题 第九章 答案[13]

  .()    值得指出对用拉链法求查找失败时的平均查找长度有两种观点其一认为比较到空指针算失败以本题为例哈希地址和均为比较次失败而哈希地址和比较次失败其余哈希地址均为比较次失败因此查找失败时的平均

知识大全 c#异步调用的几种方式

  首先我们分析一下异步处理的环境  需要在当前线程中获取返回值  不需要在当前线程中获取返回值但是仍然需要对返回值做处理  对于第中情况还可以继续细分  在当前线程中启动线程T然后继续执行当前线程中

小麦霜霉病生与防治

霜霉病又称黄化萎缩病。我国一般发病率在10%-20%,严重的高达50%。通常在田间低洼处或水渠旁零星发生。该病在不同生育期出现症状不同。苗期染病病苗矮缩,叶片淡绿或有轻微条纹状花叶。返青拔节后染病叶色

小麦霜霉病生与防治

霜霉病又称黄化萎缩病。我国一般发病率在10%-20%,严重的高达50%。通常在田间低洼处或水渠旁零星发生。该病在不同生育期出现症状不同。苗期染病病苗矮缩,叶片淡绿或有轻微条纹状花叶。返青拔节后染病叶色