md5加密

    xiaoxiao2021-12-03  20

    项目中用到加密的内容, 重新翻阅md5

    摘取自百度百科

    MD5的全称是Message-Digest Algorithm 5(信息-摘要算法),在90年代初由MIT Laboratory for Computer Science和RSA Data Security Inc的Ronald L. Rivest开发出来,经MD2、MD3和MD4发展而来。

    过程:

    在一些初始化处理后,MD5以512位分组来处理输入文本,每一分组又划分为16个32位子分组。算法的输出由四个32位分组组成,将它们级联形成一个128位散列值。 首先填充消息使其长度恰好为一个比512位的倍数仅小64位的数。填充方法是附一个1在消息后面,后接所要求的多个0,然后在其后附上64位的消息长度(填充前)。这两步的作用是使消息长度恰好是512位的整数倍(算法的其余部分要求如此),同时确保不同的消息在填充后不相同。 四个32位变量初始化为: A=0x01234567 B=0x89abcdef C=0xfedcba98 D=0x76543210 它们称为链接变量(chaining variable) 接着进行算法的主循环,循环的次数是消息中512位消息分组的数目。 将上面四个变量复制到另外的变量中:A到a,B到b,C到c,D到d。 主循环有四轮(MD4只有三轮),每轮很相似。第一轮进行16次操作。每次操作对a,b,c和d中的其中三个作一次非线性函数运算,然后将所得结果加上第四个变量,文本的一个子分组和一个常数。再将所得结果向右环移一个不定的数,并加上a,b,c或d中之一。最后用该结果取代a,b,c或d中之一。

    四轮操作

    编辑 设Mj表示消息的第j个子分组(从0到15),<<<s表示循环左移s位,则四种操作为: FF(a,b,c,d,Mj,s,ti)表示a=b+((a+(F(b,c,d)+Mj+ti)<<<s) GG(a,b,c,d,Mj,s,ti)表示a=b+((a+(G(b,c,d)+Mj+ti)<<<s) HH(a,b,c,d,Mj,s,ti)表示a=b+((a+(H(b,c,d)+Mj+ti)<<<s) II(a,b,c,d,Mj,s,ti)表示a=b+((a+(I(b,c,d)+Mj+ti)<<<s) 这四轮(64步)是:

    转载请注明原文地址: https://ju.6miu.com/read-680024.html

    最新回复(0)