MD5简介

一、概述

MD5(Message-Digest Algorithm 5),即消息摘要算法第五版,是一种被广泛使用的密码散列函数。散列算法的基础原理是:将数据(如一段文字)运算,变为另一段固定长度的值。

MD5 可以产生出一个128位(16字节)的散列值(hash value),用于确保传输的信息完整一致。

MD5 由美国密码学家 Ronald Linn Rivest 设计,于1992年公开,用以取代 MD4 算法。MD5 算法的程序在 RFC 1321 中被加以规范。

二、原理

MD5将整个文件当做一个大文本信息,通过不可逆的字符串变换算法,产生一个唯一的MD5信息摘要。文件的MD5类似于人的指纹,在世界上是独立无二的,如果任何人对文件做了任何改动,其md5的值也就是对应的“数字指纹”都会发生变化。
对MD5算法简要的叙述可以为:MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。
md5与对称和非对称加密算法不同,这两种密码是防止信息被窃取,而摘要算法的目标是用于证明原文的完整性。

三、特点

MD5 算法具有以下特点:
压缩性:任意长度的数据,运算得出的 MD5 值长度都是固定的(128位);
容易计算:从原数据计算出 MD5 值很容易;
抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的 MD5 值都有很大区别;
强抗碰撞:已知原数据和其 MD5 值,想找到一个具有相同 MD5 值的数据(即伪造数据)是非常困难的。

四、作用

MD5 的作用是:让大容量信息在用数字签名软件签署私人密钥前,被“压缩”成一种保密的格式(就是把一个任意长度的字符串变换成一定长度的十六进制字符串)。除了 MD5 以外,其他比较有名的算法还有 sha-1、RIPEMD 以及 Haval 等。

五、应用场景

1、一致性验证

MD5 可以为文件传输场景中,提供文件的一致性验证。

例如,文件服务器预先提供一个 MD5 校验值,用户下载完文件以后,用 MD5 算法计算下载文件的 MD5 校验值(如果任何人对文件做了任何改动,这个文件的MD5值就会发生变化),然后通过检查这两个校验值是否一致,就能判断下载的文件是否出错、或者下载的文件是否被篡改了。

现在,利用MD5算法进行文件校验的方法,已经广泛应用到软件下载站、论坛数据库、系统文件安全等方面了。

2、数字签名

MD5 的典型应用是对一段信息(Message)产生信息摘要(Message-Digest),以防止该段信息被篡改。

例如,在文件“readme.txt”中写入一些内容,并对这个文件进行MD5运算,产生一个MD5值并记录下来,然后可以将这个文件发送给别人,别人如果修改了“readme.txt”文件中的任何内容,我们对这个文件重新计算MD5时,就会发现两个MD5值不同。

在上述过程中,如果再有一个第三方的认证机构介入,那么使用 MD5 还可以防止文件作者的“抵赖”,这就是所谓的数字签名应用。

3、安全访问认证

MD5 还广泛用于操作系统的登录认证中,如 Unix、各类BSD操作系统登录密码、数字签名等诸多方面。

例如,在Unix操作系统中,用户的密码是经MD5(或其它类似的算法)运算后存储在文件系统中。当用户登录的时候,系统把用户输入的密码进行MD5运算,然后再与保存在文件系统中的MD5值进行比较,从而确定用户输入的密码是否正确。通过这些步骤,操作系统在并不知道用户密码的明文的情况下,就可以确定用户登录系统的合法性,这可以避免用户的密码被具有系统管理员权限的用户窃取。

MD5 将任意长度的“字符串”映射为一个128bit的“字符串”,并且通过该128bit的“字符串”反推原始字符串是困难的,换句话说,即使你看到源程序和算法描述,也很难将一个MD5的值转换回原始的字符串。

六、一些疑问

1、同一个文件用不同的语言计算出来的md5一样吗?
只要算法正确,都是一样的。

2、拷贝的文件md5会改变吗?
不会。

3、还有什么其他的摘要算法么?
除了MD5,还有更安全的SHA-1,SHA-2(包括SHA-224、SHA-256、SHA-384,和SHA-512 ),SHA-3,RIPEMD-160等哈希加密算法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

追阳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值