python的hash模块

# -*- 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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值