Python基于十六进制数组AES(ECB)128位加密方法
1.高级加密标准AES(Advanced Encryption Standard),支持三种密码标准:128位、192位和256位。这里采用的是128位ECB加密模式,密钥为16字节十六进制数组。2.在加密之前先安装好对应的加密库:python 在Windows下安装pycryptodome 模块 pip install pycryptodome ;python 在Linux下...
·
1.高级加密标准AES(Advanced Encryption Standard),支持三种密码标准:128位、192位和256位。这里采用的是128位ECB加密模式,密钥为16字节十六进制数组。
2.在加密之前先安装好对应的加密库:
python 在 Windows下安装pycryptodome 模块 pip install pycryptodome ;
python 在 Linux下安装pycrypto模块 pip install pycrypto ;
选择对应的模块安装。
3.开始编写py文件
import base64
import codecs
import binascii
from Crypto.Cipher import AES
from Crypto.Random import get_random_bytes
from Crypto import Random
#secret为16字节的密钥,secret原始为列表,需要将secret转换为byte类型作为加密函数的参数
secret=[0xFE,0xFC,0xFD,0x0F,0x0E,0x11,0x43,0x06,0xA6,0xDF,0xC0,0xB7,0x7F,0x55,0x54,0x3D]
secret = bytearray(secret)
print('secret:', secret)
print('secret密钥长度:',len(secret))
data = ''
#raw_data为待加密的十六进制数组,需要将raw_data转换为加密函数需要的byte类型参数
raw_data=[0xC5,0xA4,0x01,0x01,0x0C,0x01,0x05,0x00,0x94,0x9B,0x2D,0x67,0x01,0x00,0x00,0xE5]
data = bytearray(raw_data)
print('data明文:',data)
#明文处理
#不做任何填充,但是要求密钥必须是16字节的整数倍:
def add_to_16(text):
while len(text)%16 !=0:
text+='\0'
return (text)
data=add_to_16(data)
print('data长度:',len(data))
cipher = AES.new(secret, AES.MODE_ECB) #通过AES.MODE_ECB处理初始密码字符串,并返回cipher对象
encrypt_data = cipher.encrypt(data) #输入需要加密的字符串,注意字符串长度要是16的倍数。
encrypt_data=codecs.encode(encrypt_data,'hex')
print ('密文:',encrypt_data)
更多推荐
已为社区贡献1条内容
所有评论(0)