【C#】MD5加密(Message-Digest Algorithm 5)

引言

    MD5为计算机安全领域广泛使用的一种散列函数,用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一。将数据(如汉字)运算为另一固定长度值,是杂凑算法的基础原理

MD5算法的特点

(1)压缩性:任意长度的数据,算出的MD5值长度都是固定的

(2)容易计算:从原数据计算出MD5值很容易

(3)抗修改性:对原数据进行任何改动,哪怕只修改一个具有相同MD5值的数据(即伪造数据)是非常困难的

MD5算法的原理

    MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值

    总体流程如下图所示,表示第i个分组,每次的运算都由前一轮的128位结果值和第i块512bit值进行运算

【C#】MD5加密(Message-Digest Algorithm 5)_第1张图片

MD5应用

    MD5的典型应用是对一段信息(message)产生信息摘要(Message-Digest),以防止被篡改。比如,在Unix下有很多软件在下载的时候都有一个文件名相同,文件扩展名为.md5的文件,在这个文件中通常只有一行文本,大致结构如下:

    MD5 (tanajiya.tar.gz) = 38b8c2c1093dd0fec383a9d9ac940515

    这就是tanajiya.tar.gz文件的数字签名。MD5将整个文件当作一个大文本信息,通过其不可逆的字符串变换算法,产生了这个唯一的MD5信息摘要。

    大家都知道,地球上任何人都有自己独一无二的指纹,这常常成为司法机关鉴别罪犯身份最值得信赖的方法;与之类似,MD5就可以为任何文件(不管其大小、格式、数量)产生一个同样独一无二的“数字指纹”,如果任何人对文件做了任何改动,其MD5值也就是对应的“数字指纹”都会发生变化。

Md5Helper

   
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Security.Cryptography;

namespace CaterCommon
{
    public partial class Md5Helper
    {
        public static string EncryptString(string str)
        {
            //uft8,x2
            //创建对象的方法:构造方法,静态方法(工厂)
            MD5 md5 = MD5.Create();
            //将字符串转换成字节数组
            byte[] byteOld=Encoding.UTF8.GetBytes(str);
            //调用加密方法
            byte[] byteNew = md5.ComputeHash(byteOld);
            //将加密结果进行转换字符串
            StringBuilder sb = new StringBuilder();
            foreach(byte b in byteNew)
            {
                //将字节转换成16进制表示的字符串,而且是恒占用两位从头再来
                sb.Append(b.ToString("x2"));
            }
            //返回加密的字符串
            return sb.ToString();
        }
    }
}

小结

    对于MD5加密,还仅限于初步的了解和认识。在后期学习中会深入学习一下。

    如有不同见解,欢迎指正



         本文所有代码均已通过作者测试

         本文所有内容均为作者原创,如有转载,请注明出处


你可能感兴趣的:(-----C#)