python的hashlib模塊


# -*- coding: utf-8 -*-

"""python 的MD5 sha1 模塊"""

import hashlib

#md5的例子
m = hashlib.md5()
m.update(b"Hello 123")
m.update(b" Hello 456")
print(m.digest())   #字節串
print(m.hexdigest())#字符串
print(m.digest_size)#16
print(m.block_size)#64
#也可以一次處理
print(hashlib.md5(b"Hello 123 Hello 456").hexdigest())

"""模塊函數
hashlib.new(name[,data]) name:算法的名字 data:字節數據
hashlib.algorithms_guaranteed 所有平台支持的算法
{'sha1', 'sha256', 'sha384', 'md5', 'sha512', 'sha224'}
hashlib.algorithms_available 返回python可用的算法,可用於new(),guaranteed是它的子集
{'RIPEMD160', 'sha1', 'sha256', 'SHA256', 'sha', 'dsaEncryption', 'MD5', 'SHA224', 
'SHA384', 'DSA-SHA', 'dsaWithSHA', 'sha224', 'md4', 'MD4', 'whirlpool', 'SHA', 'sha384', 
'ripemd160', 'md5', 'SHA1', 'sha512', 'DSA', 'SHA512', 'ecdsa-with-SHA1'}


hash對象屬性
hash.digest_size 結果的大小
hash.block_size 塊大小
hash.name 名字
hash.update(arg) 看例子
hash.digest() 字節串
hash.hexdigest() 字符串
hash.copy() 返回hash對象的拷貝

用於密碼加密
hashlib.pbkdf2_hmac(hash_name, password, salt, iterations, dklen=None)
hash_name 算法名稱
password 要加密的密碼
salt 建議16字節或更長
iterations 迭代次數,取決於算法和計算能力,
dklen 結果長度
返回值是字節串
"""

#測試迭代用時
#100000     0.0625  秒出結果
#1000000    0.63    小卡一下
#10000000   6.2     不可接受
#...
#10000000000 超出最大值

import binascii
from datetime import datetime
t1 = datetime.now()
dk = hashlib.pbkdf2_hmac('md5', b'password', b'salt', 100000)
t2 = datetime.now()
t = (t2 - t1).seconds + (t2 - t1).microseconds / 1000000
print(t)
m = binascii.hexlify(dk)
print(m)

 


免責聲明!

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



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