好久沒更博客了,最近做了一些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)