混列lib模块用于加密相关操作,主要提供SHA1、SHA224、SHA256、SHA384、SHA512和md5算法而不是md5模块。
python3废除了md5和sha模块
摘要算法是什么? 摘要算法又称散列算法、散列算法。 使用函数将任意长度的数据转换为固定长度的数据串(通常用十六进制字符串表示)。
摘要算法是通过摘要函数f ()对任意长度的数据data计算出固定长度的摘要digest的算法,其目的在于发现原始数据是否被篡改。
摘要算法之所以能够指出数据是否被篡改,是因为摘要函数是单向函数,计算f(data )很简单,但在digest中反推data非常困难。 此外,如果对原始数据进行bit修改,则计算出的摘要将完全不同。
import hashlib
MD5是最常见的摘要算法,速度快,生成结果为固定的128位字节,通常用32位十六进制字符串表示。
md5=hashlib.md5 ()
MD5.update(123456 ).encode (utf-8 ) )
打印(MD5.hex digest ) )
计算的摘要
e 10a DC 3949 ba 59 abb e56 e 057 f 20 f 883 e
SHA1的结果是160位字节,通常由40位十六进制字符串表示。
sha1=hashlib.sha1 (
sha1.update(123456 ).encode (utf-8 ) )
打印(sha1.hex digest ) )
计算的摘要
7 c4a 8d 09 ca 3762 af 61 e 59520943 DC 26494 f 8941 b
SHA256、SHA384和SHA512是比SHA1更安全的算法,但越慢,摘要长度也越长。
sha256=hashlib.sha256 (
sha 256 .更新(123456 ).encode (utf-8 ) )
打印(sha 256.hex digest ) )
计算的摘要
8d 969 ee F6 ecad 3c 29 a3 a 629280 e 686 cf0C3 F5 D5 a86 aff 3c a 12020 c 923 ADC6c 92
sha384=hashlib.sha384 (
sha 384 .更新(123456 ).encode (utf-8 ) )
打印(sha 384.hex digest ) )
计算的摘要
0a 989 ebc 4a 77 b 56 a6 e 2bb 7b 19 d 995 d 185 ce 44090 c 13e 2984 b 7e cc6 d 446 d 446 b 61 ea 9991 b 76 a 4c 2f 04 b1b 4d 2448414449454
sha512=hashlib.sha512 (
sha 512 .更新(123456 ).encode (utf-8 ) )
打印(sha 512.hex digest ) )
计算的摘要
ba 3253876 aed 6b c 22 D4 a6 ff 53 d 8406 c6ad 864195 ed 144 ab 5c 87621 b6c 233 b 548 baeae 6956 df 346 e c8c 17 F5 e a10 f35 ee 3c BC 514797 ed7DDD 3145464 e2a0Bab 4456
虽然上述加密算法仍然非常强大,但是它的缺点是崩溃库能够进行反向分析。 因此,需要在加密算法中添加自定义key进行加密。
MD5=hashlib.MD5(Jiami ).encode (utf-8 ) )
MD5.update(123456 ).encode (utf-8 ) )
打印(MD5.hex digest ) )
计算的摘要
7 CEA 57894 be 0879 c 73 d 39536 CD 13e ad 2
python还有一个hmac模块,用于创建key和内容,然后进行处理和加密
导入hmac
h=hmac.new(Jiami ).encode ) (utf-8 ) )
h.update(123456 ).encode (utf-8 ) )
打印(h.hex digest ) )
计算的摘要
c 9132 de0e 588824 BD 284 fc34 CD6c9DC 0