密码学基础(一):摘要算法

什么是摘要算法

摘要算法是通过一系列的计算方法和规则,将输入的任意长度的数据转化成固定长度的返回值,这个值被称为hash值(哈希值),而这种算法被称为摘要算法、哈希算法、散列算法。

主流的摘要算法

MD4、MD5:MD5生成128位固定长度的hash值,已经被破解
SHA-1:生成164位固定长度的hash值,已经被破解
SHA-2:生成224、256、384、512位的hash值
SHA-3:全新的算法和标准

备注:
从MD4-SHA-2,随着生成的长度的增加,碰撞成功的概率会减小,因为只能暴力枚举破解,所以破解的难度也就增大。比如128位的MD5,碰撞概率为2的128次方分之1,而512位则为2的512次方分之一。

摘要算法的大概原理

以MD5为例,MD5以512位对原数据进行分组加密,最后输出32个16进制,也就是32x4=128位,其加密的基本流程如下:

第一步:补位

元数据如果位数不满足Length=512xn+448,也就是512取余值为448,则对其补位使其满足规则。其意义是在MD5中,将元数据分为512位后分组进行加密(后面会讲到),其中会预留64位来表示数据的原始信息,比如原始长度等。所以Length=512xn+448,加上64位的预留信息之后:Total=Length+64=512x(n+1)。

第二步:设定初始值

摘要算法根据元数据长度按照512分为n组后,会对初始值进行n轮加密运算,每轮的计算方式和第一轮大同小异。所有轮数计算完毕后将变化后的4个初始值组合输出最终结果。官方实现中的4个初始值为:
A=0x01234567
B=0x89ABCDEF
C=0xFEDCBA98
D=0x76543210
如上所示,A、B、C、D都为8个16进制,一个16进制表示4位,所以一个初始值的位数就是8x4=32位,所以MD5最终输出的长度固定为32x4=128.

第三步:按照组数循环计算

算法的大概过程如下,大概就是对ABCD一顿猛如虎的操作演变成完全不同的ABCD

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值