C# 中使用 MD5 算法计算 hash (哈希)值的四种方法
2008-05-11 14:39
483 查看
在.net中,由 System.Security.Cryptography 命名空间提供了加密和哈希的几个类。其中 md5 编码由 MD5CryptoServiceProvider 实现。
在使用过程中由于 MD5CryptoServiceProvider 提供了多种方法去计算md5的hash值,反而令人搞不清楚,所以这里帖出计算md5的几种常见方法
先引用命名空间:
using System.Security.Cryptography;
using System.Text;
然后:
MD5CryptoServiceProvider md5=new MD5CryptoServiceProvider();
string source="HelloWorld";
byte[] message;
message=Encoding.Default.GetBytes(source);
//方法1
// 使用ComputeHash方法,适合用于计算简单的字符串的md5值时
md5.ComputeHash(message);
Console.WriteLine(Convert.ToBase64String(md5.Hash));
//方法2
// 使用TransformFinalBlock方法,适合用于原始数据不多时
md5.Initialize();
md5.TransformFinalBlock(message,0,message.Length);
Console.WriteLine(Convert.ToBase64String(md5.Hash));
//方法3
// 此方法等同于方法2
md5.Initialize();
md5.TransformBlock(message,0,message.Length,
message,0); //note: output bytes must equal input bytes
md5.TransformFinalBlock(message,0,0);
Console.WriteLine(Convert.ToBase64String(md5.Hash));
//方法4
// 将原始消息分两次编码,得出的结果跟上面的一样,适合用于计算大量原始数据时,例如计算一个文件的md5值
md5.Initialize();
message=Encoding.Default.GetBytes("Hello");
md5.TransformBlock(message,0,message.Length,
message,0);
message=Encoding.Default.GetBytes("World");
md5.TransformFinalBlock(message,0,message.Length);
Console.WriteLine(Convert.ToBase64String(md5.Hash));
在使用过程中由于 MD5CryptoServiceProvider 提供了多种方法去计算md5的hash值,反而令人搞不清楚,所以这里帖出计算md5的几种常见方法
先引用命名空间:
using System.Security.Cryptography;
using System.Text;
然后:
MD5CryptoServiceProvider md5=new MD5CryptoServiceProvider();
string source="HelloWorld";
byte[] message;
message=Encoding.Default.GetBytes(source);
//方法1
// 使用ComputeHash方法,适合用于计算简单的字符串的md5值时
md5.ComputeHash(message);
Console.WriteLine(Convert.ToBase64String(md5.Hash));
//方法2
// 使用TransformFinalBlock方法,适合用于原始数据不多时
md5.Initialize();
md5.TransformFinalBlock(message,0,message.Length);
Console.WriteLine(Convert.ToBase64String(md5.Hash));
//方法3
// 此方法等同于方法2
md5.Initialize();
md5.TransformBlock(message,0,message.Length,
message,0); //note: output bytes must equal input bytes
md5.TransformFinalBlock(message,0,0);
Console.WriteLine(Convert.ToBase64String(md5.Hash));
//方法4
// 将原始消息分两次编码,得出的结果跟上面的一样,适合用于计算大量原始数据时,例如计算一个文件的md5值
md5.Initialize();
message=Encoding.Default.GetBytes("Hello");
md5.TransformBlock(message,0,message.Length,
message,0);
message=Encoding.Default.GetBytes("World");
md5.TransformFinalBlock(message,0,message.Length);
Console.WriteLine(Convert.ToBase64String(md5.Hash));
相关文章推荐
- C# 中使用 MD5 算法计算 hash (哈希)值的四种方法
- C# 中使用 MD5 算法计算 hash (哈希)值的四种方法
- C#中使用委托、接口、匿名方法、泛型委托实现加减乘除算法
- [C#] 计算大文件的MD5的两种方式(直接调用方法计算,流计算-适用于大文件)
- C#自动计算字符串公式的四种方法
- java 解决Hash(散列)冲突的四种方法--开放定址法(线性探测,二次探测,伪随机探测)、链地址法、再哈希、建立公共溢出区
- c#的哈希(hash)算法解析
- C#使用自定义算法对数组进行反转操作的方法
- [原创]HashCalc - 一款计算单个文件哈希值的免费软件,目前支持CRC32、MD5、SHA-1、SHA-2、Ripemd等算法。
- C#使用linq计算执行元素在列表中出现次数的方法
- C#小练习(使用方法重载使得方法可以分别计算整数、双精度、字符串)
- 哈希长度扩展攻击的简介以及HashPump安装使用方法
- c#打包文件解压缩 C#中使用委托、接口、匿名方法、泛型委托实现加减乘除算法 一个简单例子理解C#的协变和逆变 对于过长字符串的大小比对
- C#基于基姆拉尔森算法计算指定日期是星期几的方法
- VC 使用CryptoAPI计算Hash值:MD5, SHA
- c#中字符串MD5的计算方法
- 哈希长度扩展攻击(Hash Length Extension Attack)利用工具hexpand安装使用方法
- 【C#/算法】任意圆形和三角形相交部分面积的计算方法
- C# 实现MD5 Hash 计算
- C#计算字符串哈希值(MD5、SHA)的方法小结