我是看的这个up主的视频。
略微草堂笔记(dog)


MD5就是不管你给多少数据,最后都给你得出一个长度为32的字符串(128byte,16字节)
特点:长度固定,不可逆,基本上一种原数据对应其独特的MD5值
应用:密码保护,完整性检测,数字签名(认证)等等
具体过程
首先你的数据的byte进行补位操作:
使长度为N*512+448 byte大小
注意,就算你原本长度也是符合这个大小,还是会进行补位操作
补位操作
先给一个1,剩下全补0
至于那个448,是因为512-448=64,这个64是来记录你原本数据的大小的
标准幻数
16个字节(也就是MD5的初始形态)
标准的是
A=01234567
B=89abcdef
C=fedcba98
D=76543210
然后因为程序是小端:
所以应该
A=0x76543210
......
然后定义这三个函数
abcd就是标准幻数
x是你之前得到的N个512数据(64字节)
这64字节分为16个四个字节
这个x就是和你这个4个字节
然后s和ac就是常数

然后对一个64字节进行这么多次函数调用
每次幻数的顺序不同
最后得到了一个新的abcd幻数,然后再和之前的(这一轮开始时候没有调用函数)幻数相加
得到一个新的幻数
然后这个幻数又作为标准,去处理下一个64字节数据,处理完所有的数据后,得到的就是MD5了
import hashlib
def md5_encrypt(input_string):
md5 = hashlib.md5()
md5.update(input_string.encode('utf-8'))
return md5.hexdigest()
这是一段python的MD5加密使用
本文介绍了MD5哈希函数的基本概念、特点以及在密码保护和数据完整性检测中的应用,详细解释了其工作原理,包括数据补位、标准幻数和函数调用过程,并给出了Python中MD5加密的代码示例。
1万+

被折叠的 条评论
为什么被折叠?



