MD5( 信息摘要算法)的概念原理及python代码的实现

Posted 虚生

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MD5( 信息摘要算法)的概念原理及python代码的实现相关的知识,希望对你有一定的参考价值。

简述:

message-digest algorithm 5(信息-摘要算法)。经常说的“MD5加密”,就是它→信息-摘要算法。

md5,其实就是一种算法。可以将一个字符串,或文件,或压缩包,执行md5后,就可以生成一个固定长度为128bit的串。这个串,基本上是唯一的。

不可逆性:

每个人都有不同的指纹,看到这个人,可以得出他的指纹等信息,并且唯一对应,但你只看一个指纹,是不可能看到或读到这个人的长相或身份等信息。

特点

  1. 压缩性:任意长度的数据,算出的MD5值长度都是固定的。
  2. 容易计算:从原数据计算出MD5值很容易。
  3. 抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。
  4. 强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。

MD5长度

md5的长度,默认为128bit,也就是128个0和1的二进制串。这样表达是很不友好的。所以将二进制转成了16进制,每4个bit表示一个16进制,所以128/4 = 32 换成16进制表示后,为32位了。

为什么网上还有md5是16位的呢?

其实16位的长度,是从32位md5值来的。是将32位md5去掉前八位,去掉后八位得到的。

python代码实现

基本的example:

技术分享图片
 1 # -*- coding: utf-8 -*-
 2 # coding=utf-8
 3 import hashlib
 4 
 5 print("example one")
 6 str = "this is a md5 test"
 7 
 8 h1 = hashlib.md5()
 9 
10 h1.update(str.encode(encoding=utf-8))
11 
12 print("MD5 ency before:" + str)
13 print("MD5 ency after:" + h1.hexdigest())
14 
15 
16 print("example two")
17 str = "this is a md5 testQQQQQQQQQQQQQQQQQQQQQQqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
18 
19 h1 = hashlib.md5()
20 
21 h1.update(str.encode(encoding=utf-8))
22 
23                                                               1,1           Top
View Code

 

参考文档: https://www.jianshu.com/p/4ba20afacce2

以上是关于MD5( 信息摘要算法)的概念原理及python代码的实现的主要内容,如果未能解决你的问题,请参考以下文章

MD5加密算法

网络安全-安全散列函数,信息摘要SHA-1,MD5原理

MD5 算法

MD5算法

MD5算法

软件应用开发技术之四:MD5算法解析及实现