"景先生毕设|www.jxszl.com

获取MD5 Hash值与字符串MD5加密C#源代码

2023-12-15 15:15编辑: www.jxszl.com景先生毕设
 获取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