md5 英文名为:Message Digest Algorithm,即信息摘要算法。这是一种散列算法,散列函数是一种公开的数学函数。散列函数运算中的输入信息叫做报文,运算后的所得的结果叫做散列码或者消息摘要。
md5是一种非常著名的散列算法,已经成为国际标准。md5散列算法对输入的任意长度消息产生128位(16字节)长度的散列值(或称消息摘要)。注意,这个散列值是一个十六进制的值,而经常见到的是将其转换后的字符串。
md5算法包括以下四个步骤:
- 附加填充位:首先对输入的报文进行填位补充,使填充后的数据长度模512后余448,如果数据长度正好模512余448,则需要增加512个填充位,也就是说填充的个数位1-512个。填充位第一个位为1,其余全部为0;
- 补足长度:将数据长度表示为二进制,如果长度超过64位,则截取其低64位,如果长度不足64位,则在其高位补0.将这个64位的报文长度补在经过填充的报文后,使得最后的数据为512为的整数倍。
- 初始化MD缓存器。md5运算要用到一个128位的MD5缓存器,用来保存中间变量和最终结果。该缓存器又可以看成4个32位的寄存器,A、B、C、D
- 处理数据段
使用openssl进行md5加密
#include <iostream>
#include <string>
#include <openssl/md5.h>
using namespace std;
//1.独立API ,一次性输入要计算的数据,然后得到md5的值
/