怎么在Python中使用内置的加密模块

  介绍

本篇文章给大家分享的是有关怎么在Python中使用内置的加密模块,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

数据加密:

<李>

对称加密:数据加密和解密使用相同的密钥,主要解决数据的机密性(DES、AES)

<李>

非对称加密(公匙加密):数据加密和解密使用的不同密钥,主要用于身份的验证(DSA, RSA)

<李>

单向加密:只能加密不能解密,主要用于解决数据的完整性(MD5,沙系列算法)

Python内置加密模块:

hashlib主要提供了一些常见的单向加密算法(如MD5、沙等)hmac单,向加密算法,支持设置一个额外的密匙(盐)来提高安全性secretsPython3.6新增用于获取安全随机数

<强> 1。hashlib模块

其中主要包含了MD5和SHA模块的功能,还提供了如MD5、SHA1, SHA224, SHA256, SHA384和SHA512(输出长度不同)等算法的函数实现

hashlib模块包含的函数与属性:

hashlib.new(名称(数据))用于构造指定的哈希算法所对应的哈希对象,名字可用于指定哈希算法的名称,如“MD5 # 39;‘SHA1 # 39;,不分大小写,数据为一个可选参数hashlib.algorithms_guaranteed它的值是一个该模块在所有平台都会支持的哈希算法的名称集合:设置((& # 39;SHA1 # 39; & # 39; sha224& # 39;, & # 39; sha384& # 39;, & # 39; sha256& # 39;, & # 39; sha512& # 39;, & # 39; MD5 # 39;]) hashlib.algorithms_available它的值是一个当前运行Python的解释器中可用的哈希算法的名称集合,algorithms_guaranteed将永远是它的子集

哈希对象包含的方法与属性:

hash.update()更新哈希对象所要计算的数据,多次调用为累加效果,如m.update (a); m.update (b)等价于m.update (a + b) hash.digest()以二进制格式返回传递给更新()函数的所有数据的摘要信息(字符串)hash.hexdigest()以十六进制格式返回传递给更新()函数的所有数据的摘要信息(字符串)hash.copy()可用来有效计算共享一个初始子串的数据的摘要信息hash.digest_sizehash结果的字节大小,即hash.digest()方法返回结果的字符串长度,MD5:16, sha1:20, sha224:28hash.block_sizehash算法内部块的字节大小hash.name当前散列对象对应的哈希算法的标准名称(小写形式),可以直接传递hashlib.new()函数来创建另外一个同类型的哈希对象

实例:

重要

import  hashlib      时间=hash  hashlib.md5 ()   你好,hash.update (b # 39; & # 39;)   hash.update (b # 39;世界! & # 39;)   时间=ret1  hash.digest(),,,,, #,以二进制格式返回数据的加密信息   print(类型(ret1), len (ret1), ret1)   时间=ret2  hash.hexdigest(),,,, #,以十六进制返回加密的数据值   print(类型(ret2), len (ret2), ret2)结果

& lt; class  & # 39;字节# 39;祝辞,16,b, e \ xa8 \ xe2} \ x88y (81 \ xb6d \ xbd \ x8b \ x7f \ n \ xd4& # 39;   & lt; class  & # 39; str # 39;祝辞,32,65 a8e27d8879283831b664bd8b7f0ad4

注:只要输入的内容和加密模式相同,则输出的密匙就相同

怎么在Python中使用内置的加密模块

<强> 2. hmac模块

实现了HAMC算法,与hashlib提供的API基本一致

HAMC模块提供的函数:

hamc.new(味精=None,关键digestmod=None)用于创建一个hmac对象,关键为密钥,味精为初始数据,digestmod为所使用的哈希算法,默认为hashlib.md5hmac.compare_digest (a, b)比较两个hmac对象,返回的是==b的值

HAMC对象中提供的方法与属性与散列对象中一致

实例:

重要

import  hmac      时间=h2  hmac.new (b # 39;是的,,,b # 39;一个# 39;,,digestmod=hashlib.sha224),,, #, digestmod 默认为MD5   h2.update (b # 39;你好# 39;)   时间=ret1  h2.digest(),, #,二进制   时间=ret2  h2.hexdigest(),, #,十六进制   print(类型(ret1), ret1)   print(类型(ret2), ret2)      时间=h3  hmac.new (b # 39;是的,,,b # 39;名字# 39;),,   时间=ret3  h3.hexdigest ()   时间=c  hmac.compare_digest (ret2, ret3),,, #,比较同类型进制的值   打印(c)

结果

& lt; class  & # 39;字节# 39;祝辞,b,, \ x9a \ xd0 {\ x15WTE9@ \ xd9 \ xe3z \ xfb + o \ \ \ xc5 \ x88 \ x7f \ x1c \ xa4Q \ xaf \ x0c \ n \ xa8E& # 39;   & lt; class  & # 39; str # 39;在269年ad07b155754453940d9e37afb2b5c6fc5887f1ca451af0c0aa845   假

怎么在Python中使用内置的加密模块