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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM