获取MD5 Hash值与字符串MD5加密C#源代码
一、MD5加密简介
MD5,全称MD5 Message-Digest Algorithm,是一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5由美国密码学家罗纳德·李维斯特(Ronald Linn Rivest)设计,于1992年公开,用以取代MD4算法。这套算法的程序在 RFC 1321 标准中被加以规范。MD5(Message Digest Algorithm 5)是一种常用的哈希函数,可以将任意长度的数据映射成固定长度(通常是128位)的哈希值。MD5加密算法通过对输入的数据进行一系列复杂的计算,生成一个唯一且不可逆的哈希值。
二、MD5加密原理
MD5算法加密的过程分为三步:处理原文,设置初始值,加密运算。
四轮循环运算
由于MD5是将信息以512位为一组分组来进行处理,所以首先要计算原文长度(bit)对512的求余结果,如果不等于448,就需要对原文进行填充,使其求余结果等于448。
具体填充方法是第一位为1,余下统一填充为0,填充完后,信息的长度就为N512+448(bit)。之后用剩余的64位(512-448=64位)存储填充前信息的长度,这样处理后的信息长度就是N512+448+64,即512*(N+1)。
三、 字符串MD5加密代码样例
public static string MD5Encrypt(string sourceData)
{
char[] array = sourceData.ToCharArray();
byte[] array2 = new byte[array.Length];
for (int i = 0; i < array.Length; i++)
{
array2[i] = (byte)array[i];
}
MD5CryptoServiceProvider md5CryptoServiceProvider = new MD5CryptoServiceProvider();
byte[] value = md5CryptoServiceProvider.ComputeHash(array2);
return BitConverter.ToString(value);
}
四、获取MD5 Hash值代码样例
public static string GetMD5Hash(string path)
{
string result;
try
{
bool flag = File.Exists(path);
if (flag)
{
FileStream fileStream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read);
MD5CryptoServiceProvider md5CryptoServiceProvider = new MD5CryptoServiceProvider();
byte[] value = md5CryptoServiceProvider.ComputeHash(fileStream);
string text = BitConverter.ToString(value);
text = text.Replace("-", "");
fileStream.Close();
result = text;
}
else
{
result = string.Empty;
}
}
catch (Exception ex)
{
result = string.Empty;
}
return result;
}
原文链接:http://www.jxszl.com/biancheng/C/556434.html