码迷,mamicode.com
首页 > 编程语言 > 详细

python的hashlib模块

时间:2016-10-07 01:06:42      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:

# -*- 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, bpassword, bsalt, 100000)
t2 = datetime.now()
t = (t2 - t1).seconds + (t2 - t1).microseconds / 1000000
print(t)
m = binascii.hexlify(dk)
print(m)

 

python的hashlib模块

标签:

原文地址:http://www.cnblogs.com/eaxebx/p/5935062.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!