C# 中使用 MD5 算法计算 hash (哈希)值的四种方法

在.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));

    原文作者:哈希算法
    原文地址: https://blog.csdn.net/kwanhong/article/details/535747
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞