时间:2021-05-23
1.hashlib密码散列
hashlib模块定义了一个API来访问不同的密码散列算法。要使用一个特定的散列算法,可以用适当的构造器函数或new()来创建一个散列对象。不论使用哪个具体的算法,这些对象都使用相同的API。
1.1 散列算法
由于hashlib有OpenSSL提供“底层支持”,所以OpenSSL库提供的所有算法都可用,包括:
有些算法在所有平台上都可用,而有些则依赖于底层库。这两种算法分别由algorithms_guaranteed和algorithms_available提供。
import hashlibprint('Guaranteed:\n{}\n'.format( ', '.join(sorted(hashlib.algorithms_guaranteed))))print('Available:\n{}'.format( ', '.join(sorted(hashlib.algorithms_available))))Guaranteed:
blake2b, blake2s, md5, sha1, sha224, sha256, sha384, sha3_224, sha3_256, sha3_384, sha3_512, sha512, shake_128, shake_256
Available:
DSA, DSA-SHA, MD4, MD5, RIPEMD160, SHA, SHA1, SHA224, SHA256, SHA384, SHA512, blake2b, blake2s, dsaEncryption, dsaWithSHA, ecdsa-with-SHA1, md4, md5, ripemd160, sha, sha1, sha224, sha256, sha384, sha3_224, sha3_256, sha3_384, sha3_512, sha512, shake_128, shake_256, whirlpool
1.2 MD5示例
要为一个数据块(在这里就是转换为一个字节串的Unicode串)计算MD5散列或摘要,首先要创建散列对象,然后增加数据,最后调用digest()或hexdigest()。
import hashliblorem = '''Lorem ipsum dolor sit amet, consectetur adipisicingelit, sed do eiusmod tempor incididunt ut labore et dolore magnaaliqua. Ut enim ad minim veniam, quis nostrud exercitationullamco laboris nisi ut aliquip ex ea commodo consequat. Duisaute irure dolor in reprehenderit in voluptate velit esse cillumdolore eu fugiat nulla pariatur. Excepteur sint occaecatcupidatat non proident, sunt in culpa qui officia deseruntmollit anim id est laborum.'''h = hashlib.md5()h.update(lorem.encode('utf-8'))print(h.hexdigest())这个例子使用了hexdigest()方法而不是digest(),因为要格式化输出以便清楚的打印。如果可以接受二进制摘要值,那么可以使用digest()。
1.3 SHA1示例
SHA1摘要也用同样的方式计算。
import hashliblorem = '''Lorem ipsum dolor sit amet, consectetur adipisicingelit, sed do eiusmod tempor incididunt ut labore et dolore magnaaliqua. Ut enim ad minim veniam, quis nostrud exercitationullamco laboris nisi ut aliquip ex ea commodo consequat. Duisaute irure dolor in reprehenderit in voluptate velit esse cillumdolore eu fugiat nulla pariatur. Excepteur sint occaecatcupidatat non proident, sunt in culpa qui officia deseruntmollit anim id est laborum.'''h = hashlib.sha1()h.update(lorem.encode('utf-8'))print(h.hexdigest())这个例子中的摘要值有所不同,因为MD5和SHA1算法不同。
1.4 增量更新
散列计算器的update()方法可以反复调用。每次调用时,都会根据提供的附加文本更新摘要。增量更新比将整个文件读入内存更高效,而且能生成相同的结果。
import hashliblorem = '''Lorem ipsum dolor sit amet, consectetur adipisicingelit, sed do eiusmod tempor incididunt ut labore et dolore magnaaliqua. Ut enim ad minim veniam, quis nostrud exercitationullamco laboris nisi ut aliquip ex ea commodo consequat. Duisaute irure dolor in reprehenderit in voluptate velit esse cillumdolore eu fugiat nulla pariatur. Excepteur sint occaecatcupidatat non proident, sunt in culpa qui officia deseruntmollit anim id est laborum.'''h = hashlib.md5()h.update(lorem.encode('utf-8'))all_at_once = h.hexdigest()def chunkize(size, text): "Return parts of the text in size-based increments." start = 0 while start < len(text): chunk = text[start:start + size] yield chunk start += size returnh = hashlib.md5()for chunk in chunkize(64, lorem.encode('utf-8')): h.update(chunk)line_by_line = h.hexdigest()print('All at once :', all_at_once)print('Line by line:', line_by_line)print('Same :', (all_at_once == line_by_line))这个例子展示了读取或生成数据时如何以增量方式更新一个摘要。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
详解PythonMD5加密Python3下MD5加密#由于MD5模块在python3中被移除#在python3中使用hashlib模块进行md5操作import
python之hashlib模块:主要提供字符加密功能,python3中将md5和sha模块整合到了hashlib模块,支持md5,sha1,sha224,sh
我简单的绘制了一下排序算法的分类,蓝色字体的排序算法是我们用python3实现的,也是比较常用的排序算法。Python3常用排序算法1、Python3冒泡排序—
常见的加密算法基本分为这几类,1:线性散列算法、2:对称性加密算法、3、非对称性加密算法(记记记)线性散列算法(签名算法):MD5,SHA1,HMAC比如MD5
MD5消息摘要算法是一种被广泛使用的密码散列函数,可以产生出一个128位的散列值,用于确保信息传输完整一致。 MessageDigestAlgorithmMD