1. 程式人生 > >MD5( 信息摘要算法)的概念原理及python代碼的實現

MD5( 信息摘要算法)的概念原理及python代碼的實現

偽造 ide 不可 壓縮包 acc before 固定 target a20

簡述:

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代碼的實現