MD5 简介
一、 原理概述:
MD5信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。
MD5由美国密码学家罗纳德·李维斯特(Ronald Linn Rivest)设计,于1992年公开,用以取代MD4算法。这套算法的程序在 RFC 1321 标准中被加以规范。1996年后该算法被证实存在弱点,可以被加以破解,对于需要高度安全性的数据,专家一般建议改用其他算法,如SHA-2。2004年,证实MD5算法无法防止碰撞(collision),因此不适用于安全性认证,如SSL公开密钥认证或是数字签名等用途。
二、算法步骤:
- 按位补充数据
首先需要对信息进行填充,数据按位补充,要求最终的位数对512求模的结果为448。
即便是这个数据的位数对512求模的结果正好是448也必须进行补位。 (0< x <=512)
补位的实现过程:首先在数据后补一个1 bit; 接着在后面补上一堆0 bit, 直到整个数据的位数对512求模的结果正好为448。 - 扩展长度
补位工作后,其位数长度只差64位就是512的整数倍,将一个表示数据原始长度的64 bit数补在最后。当完成补位及补充数据的描述后,得到的结果数据长度正好是512的整数倍。
……
原理
MD5码以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。
计算机生成MD5
一、 Linux
Md5sum filename
- 概述
md5sum – 计算检验MD5效验码 - 命令格式
用法:md5sum [option]…[filename]… - option
-b, –binary
以 二进制 模式 读入 文件 (DOS/Windows 下 默认)
-c, –check
对 给定 的 文件 检验 MD5 效验码
-t, –text
以 文本 模式 读入 文件 (默认)
二、Windows----Certutil
certutil -hashfile filename MD5
- 概述
Certutil 是 Windows 操作系统上预装的工具,可用于 校验文件MD5、SHA1、SHA256,下载恶意文件和免杀。 - 解码
Certutil 可以解码 Base64 编码的数据。使用 certutil 和参数 -decode。 - 生成指定哈希值
使用哈希加密算法,例如 MD5,SHA-1,SHA-256,可以验证两个文件是否相同。
该校验和是用于执行检查的散列值的数据完整性,这是一种文件签名。通过比较校验和,我们可以识别重复文件。
命令 certutil -hashfile 生成指定哈希值。
certutil -hashfile filename MD5
certutil -hashfile filename SHA1
certutil -hashfile filename SHA256