python 中md5 和 sha1 加密, md5 + os.urandom 生成全局唯一ID


首先先來介紹一下md5 和 sha1 的概念

MD5

MD5的全稱是Message-Digest Algorithm 5(信息-摘要算法)。128位長度。目前MD5是一種不可逆算法。

具有很高的安全性。它對應任何字符串都可以加密成一段唯一的固定長度的代碼。

 

SHA1

SHA1的全稱是Secure Hash Algorithm(安全哈希算法) 。SHA1基於MD5,加密后的數據長度更長,

它對長度小於264的輸入,產生長度為160bit的散列值。比MD5多32位。

因此,比MD5更加安全,但SHA1的運算速度就比MD5要慢了。

 

python 中使用md5 和 sha1

python 的內置模塊hashlib 中自帶了 md5, sha1 所以在python 使用這兩種加密還是非常方便的。

md5 使用例子:

1 from hashlib import md5
2 data_str = "hello world"
3 hash_md5 = md5(data_str).hexdigest()
4 print hash_md5

結果為:5eb63bbbe01eeed093cb22bb8f5acdc3

sha1 使用例子:

 

1 from hashlib import sha1
2 data_str = "hello world"
3 hash_sha1 = sha1(data_str).hexdigest()
4 print hash_sha1
結果為:2aae6c35c94fcfb415dbe95f408b9ce91ee846ed

可以看到的是,相同的字符串,加密后sha1的結果要比md5的結果在長度上要長一些。形同字符串,相同加密算法產生的加密串是相同的。

他們不僅可以用來加密字符串使用,往往還可以用來當做文件名,當做key value 格式存儲的key,運行任務產生的instance id 等。

使用md5 + os.urandom(n) 產生隨機字符串

有點時候我們會需要產生一個全局唯一的id,這個時候,md5 + os.urandom 就派上用場了。

os.urandom(n) 是一種隨機生成n個字節字符串的方法,而且每次生成的值都不相同。再加上md5的處理,就能夠成內容不同長度相同的字符串了。

 

例子:

import os
from hashlib import md5

for i in range(10):
    print md5(os.urandom(24)).hexdigest()

輸出結果:

3c0919ae5c84adc230a7adbb90446913
569c086e2f8badaf64065978ccb58482
3fa55d4a2a0de854bac9d33c730b7424
91b4a5029980a8166e305fe7d785b5d7
b251e79ec54c7f0320bb41320b8c6033
79c78471e6d87ba7dc11cb40618b2cf8
c14a40bb41e2ce4311d27b1add3af843
148340f61bd2193fa9fa1151f7ba7159
f3d2084ee4df18e6ad03a13ac6857f47
2f027d38265ec0576edb0c1d24eb6f68

 


免責聲明!

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



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