MD5(Message Digest Algorithm 5)是由美国密码学家罗纳德·李维斯特(Ronald Linn Rivest)开发的一套算法,被广泛应用于银行数字货币等领域。
MD5算法最初在1991年被开发出来,并在1992年公开。它是继MD2、MD3和MD4之后的第五个公开的散列算法。MD5的设计目的是为了提供一个安全的散列函数,它可以将任意长度的输入(称为消息)转换为固定长度的输出(称为散列值或指纹)。MD5算法的输出长度为128位,它被广泛应用于确保数据完整性和进行数字签名等方面
为什么要开发这个算法呢,主要是由于传统的哈希算法会产生数据堆积的问题。好奇的你想必已经对MD5算法有所了解又云里雾里,那么本期,我们将满足你的求知欲,为你解析MD5加密算法的原理。
为了实现MD5算法,我们需要四个移位寄存器。我们姑且把它叫做A、B、C、D。什么叫移位寄存器呢,就是可以进行移位的寄存器。每个移位寄存器里寄存一个32位的值。也就是说,是一个8个字符数字的组合。这里我们注意,MD5加密算法的适用系统为32位的系统。
有了这四个移位寄存器,我们就可以开始第一轮的运算。
运算的方式很简单,是如下的一行代码:
它的意思就是说,进行了箭头右侧的运算后把结果储存进A中。这个运算是什么运算呢,我们先看中括号里面的部分。其中g(B,C,D)是关于B.,C,D的一个与或非计算,这个计算的逻辑由你自己定义。X[k]是一个字。大家知道计算机里字是存储最小的单位。这个X[k]每一轮要取一个不同的值,我们把16轮运算称为一步。T[i]是一个32位的字符串,同理一轮用一个,16轮算一步。<<<是循环左移的符号。也就是吧中括号里的值进行循环左移。其位数是由你确定的。
中括号中的结果运算完成后,与字符串B相加,所得的结果存储进A中
在每一轮的结束,我们将(A,B,C,D)循环右移动一个字。
最后我们进行四步相同的运算。
所得的结果就是我们所需要的哈希值。
Revist认为MD5函数可能是目前系列中安全性最强的加密函数。但仍可能被黑客通过彩虹表等形式破译。其原理虽然十分复杂,但操作颇为简单。感兴趣的话可以进一步搜索。希望我的博客为你答疑解惑,也感谢你的观看。