Python中的MD5加密,你會嗎?

好久沒更博客了,最近做了一些web的項目,深深體會到了MD5在python中進行密碼驗證的優點,那麼今天就來聊一下python中的MD5吧。

MD5(Message-Digest Algorithm 5) 模塊用於計算信息密文(信息摘要),得出一個128位的密文。在python2中有MD5模塊,可以生成MD5。

import md5
test='hello everyone'
m=md5.new()
m.update(test.encode(encoding='utf-8'))
print(m.hexdigest())

到了python3移除了MD5模塊,由於MD5加密也是hash加密的一種,因此將md5也放在了hashlib庫中,使用md5時進行加密操作時,便導入的是hashlib庫。

import hashlib
test='hello everyone'#待加密信息
m=hashlib.md5()#創建md5對象
#注意最好不要直接寫m.update(test),若出現中文會報錯,爲了保證不報錯最好加上編碼格式
m.update(test.encode(encoding='utf-8'))
result=m.hexdigest()
print('加密前:',test)
print('加密後:',result)

 結果如下:

封裝python3下的md5 加密

在實現註冊,登錄界面時進行密碼驗證非常好用

import hashlib
def setPassword(password):
    md5=hashlib.md5()
    md5.update(password.encode())
    result=str(md5.hexdigest())
    return result

可能大家看過上面的代碼會對一些方法有疑問,下面小編爲大家一一解答。

hashlib.new(name[,data])

   name:hash加密算法的名稱,如md5,sha1,blake2b等等,由於在python2中md5是一個獨立模塊,因此md5.new()是用來創建對象的。

   data :需要加密的數據,如test,但在這裏我沒有使用hashlib.new(),我將數據放在了update裏,一般都是放在update裏的,這裏可以忽略。

同時,我直接一開始就是用了hashlib.md5()來創建對象,已經很明確我是使用md5加密方法,因此這個hashlib.new()也沒有太呆的用處了。

hashlib.md5().update(arg)

傳入arg對象來更新hash對象。這裏的arg只能是byte類型,若是其他會報錯,可在前面加b轉換類型。

若重複調用此方法,會將傳入的arg進行拼接,並不會將之前的arg覆蓋掉。

情況一:

m.update(a);
m.update(b);
print(m)

情況二: 

m.update(a+b);
print(m)

 情況一等價於情況二

hashlib.md5().hexdigest()

將加密的結果以十六進制顯示,還有digest()是將加密結果以二進制顯示

import hashlib
test='hello everyone'
m=hashlib.md5()
m.update(test.encode(encoding='utf-8'))
result=m.hexdigest()
result2=m.digest()
print('加密前:',test)
print('十六進制加密後:',result)
print('二進制加密後:',result2)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章