这篇文章主要讲解了Python中几种加密算法的实现,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。
生活中我们经常会遇到一些加密算法,今天我们就聊聊这些加密算法的Python实现。部分常用的加密方法基本都有对应的Python库,基本不再需要我们用代码实现具体算法。
全称:MD5消息摘要算法(英语:MD5消息摘要算法),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(散列值),用于确保信息传输完整一致.md5加密算法是不可逆的,所以解密一般都是通过暴力穷举方法,通过网站的接口实现解密.Python代码:
进口hashlib m=hashlib.md5 () m.update (str.encode (“utf8")) print (m.hexdigest ())
全称:安全哈希算法(安全散列算法)主要适用于数字签名标准(数字签名标准DSS)里面定义的数字签名算法数字签名算法(DSA), SHA1比MD5的安全性更强。对于长度小于2 ^ 64位的消息,SHA1会产生一个160位的消息摘要.Python代码:
进口hashlib sha1=hashlib.sha1 () https://www.yisu.com/zixun/data=' 2333333 ' sha1.update (data.encode (utf - 8)) sha1_data=sha1.hexdigest () 打印(sha1_data)
全称:散列消息鉴别码(散列消息身份验证代码),HMAC加密算法是一种安全的基于加密哈希函数和共享密钥的消息认证协议。实现原理是用公开函数和密钥产生一个固定长度的值作为认证标识,用这个标识鉴别消息的完整性。使用一个密钥生成一个固定大小的小数据块,即MAC,并将其加入到消息中,然后传输。接收方利用与发送方共享的密钥进行鉴别认证等.Python代码:
进口hmac 进口hashlib 第号一个参数是密钥密钥,第二个参数是待加密的字符串,第三个参数是哈希函数 mac=hmac.new(& # 39;关键# 39;& # 39;你好# 39;,hashlib.md5) mac.digest() #字符串的ascii格式 mac.hexdigest() #加密后字符串的十六进制格式
全称:数据加密标准(数据加密标准),属于对称加密算法.DES是一个分组加密算法,典型的DES以64位为分组对数据加密、加密和解密用的是同一个算法。它的密钥长度是56位(因为每个第8位都用作奇偶校验),密钥可以是任意的56位的数,而且可以任意时候改变.Python代码:
进口binascii 从pyDes进口des, CBC, PAD_PKCS5 #需要安装pip安装pyDes def des_encrypt (secret_key s): 4=secret_key k=des (secret_key CBC, iv,垫=None, padmode=PAD_PKCS5) en=k。加密(年代,padmode=PAD_PKCS5) 返回binascii.b2a_hex (en) def des_decrypt (secret_key s): 4=secret_key k=des (secret_key CBC, iv,垫=None, padmode=PAD_PKCS5) 德=k.decrypt (binascii.a2b_hex (s), padmode=PAD_PKCS5) 返回德 secret_str=des_encrypt(& # 39; 12345678 & # 39; & # 39;我爱你~ & # 39;) 打印(secret_str) clear_str=des_decrypt (& # 39; 12345678 & # 39; secret_str) 打印(clear_str)
全称:高级加密标准(英语:高级加密标准),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用.Python代码:
进口base64 从加密。进口AES密码 & # 39;& # 39;& # 39; AES对称加密算法 & # 39;& # 39;& # 39; #需要补位,str不是16的倍数那就补足为16的倍数 def add_to_16(价值): 当len(值)% 16 !=0: 值+=& # 39;\ 0 & # 39; 返回str.encode(价值)#返回字节 #加密方法 def加密(关键、文本): aes=AES.new (add_to_16(关键),AES.MODE_ECB) #初始化加密器 encrypt_aes=aes.encrypt (add_to_16(文本)#先进行aes加密 encrypted_text=str (base64.encodebytes (encrypt_aes),编码=& # 39;utf - 8 # 39;) #执行加密并转码返回字节 返回encrypted_text #解密方法 def解密(关键、文本): aes=AES.new (add_to_16(关键),AES.MODE_ECB) #初始化加密器 base64_decrypted=base64.decodebytes (text.encode(编码=& # 39;utf - 8 # 39;)) #优先逆向解密base64成字节 decrypted_text=str (aes.decrypt (base64_decrypted),编码=& # 39;utf - 8 # 39;) .replace(& # 39; \ 0 & # 39;, & # 39; & # 39;) #执行解密密并转码返回str 返回decrypted_text
全称:Rivest-Shamir-Adleman, RSA加密算法是一种非对称加密算法。在公开密钥加密和电子商业中RSA被广泛使用。它被普遍认为是目前比较优秀的公钥方案之一.RSA是第一个能同时用于加密和数字签名的算法,它能够抵抗到目前为止已知的所有密码攻击.Python代码: