Python基于十六进制数组AES(ECB)128位加密方法

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)

 

你可能感兴趣的:(Python,Python,AES,ECB,加密算法)