大一网站开发项目答辩,整个网站的关键词,网页设计与制作教案详案,中国国家培训网官网查询高级加密标准#xff08;英语#xff1a;Advanced Encryption Standard#xff0c;缩写#xff1a;AES#xff09;#xff0c;在密码学中又称Rijndael加密法#xff0c;是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES#xff0c;已经被多方分析且广…高级加密标准英语Advanced Encryption Standard缩写AES在密码学中又称Rijndael加密法是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES已经被多方分析且广为全世界所使用。经过五年的甄选流程高级加密标准由美国国家标准与技术研究院NIST于2001年11月26日发布于FIPS PUB 197并在2002年5月26日成为有效的标准。2006年高级加密标准已然成为对称密钥加密中最流行的算法之一。 本文主要通过pycryptodome库进行AES的简单加解密。
# -*- coding: utf-8 -*-#作者cacho_37967865
#博客https://blog.csdn.net/sinat_37967865
#文件encryption.py
#日期2019-07-31
#备注多种加解密方法 # pip install pycryptodome
用pyCryptodome模块带的aes先将秘钥以及要加密的文本填充为16位 AES key must be either 16, 24, or 32 bytes longimport base64
from Crypto.Cipher import AES# bytes不是32的倍数那就补足为32的倍数
def add_to_32(value):while len(value) % 32 ! 0:value b\x00return value # 返回bytes# str转换为bytes超过32位时处理
def cut_value(org_str):org_bytes str.encode(org_str)n int(len(org_bytes) / 32)print(bytes长度,len(org_bytes))i 0new_bytes bwhile n 1:i i 1new_byte org_bytes[(i-1)*32:32*i-1]new_bytes new_byten n - 1if len(org_bytes) % 32 0: # 如果是32的倍数直接取值all_bytes org_byteselif len(org_bytes) % 32 ! 0 and n1: # 如果不是32的倍数每次截取32位相加最后再加剩下的并补齐32位all_bytes new_bytes add_to_32 (org_bytes[i*32:])else:all_bytes add_to_32 (org_bytes) # 如果不是32的倍数并且小于32位直接补齐print(all_bytes)return all_bytesdef AES_encrypt(org_str,key):# 初始化加密器aes AES.new(cut_value(key), AES.MODE_ECB)#先进行aes加密encrypt_aes aes.encrypt(cut_value(org_str))# 用base64转成字符串形式encrypted_text str(base64.encodebytes(encrypt_aes), encodingutf-8) # 执行加密并转码返回bytesprint(encrypted_text)return(encrypted_text)def AES_decrypt(secret_str,key):# 初始化加密器aes AES.new(cut_value(key), AES.MODE_ECB)# 优先逆向解密base64成bytesbase64_decrypted base64.decodebytes(secret_str.encode(encodingutf-8))# 执行解密密并转码返回strdecrypted_text str(aes.decrypt(base64_decrypted), encodingutf-8).replace(\0, )print(decrypted_text)if __name__ __main__:org_str http://mp.weixin.qq.com/s?__bizMjM5NjAxOTU4MAamp;mid3009217590amp;idx1amp;sn14532c49bc8cb0817544181a10e9309famp;chksm90460825a7318133e7905c02e708d5222abfea930e61b4216f15b7504e39734bcd41cfb0a26damp;scene27#wechat_redirect# 秘钥key 123abcsecret_str AES_encrypt(org_str,key)AES_decrypt(secret_str,key)