ch57x 硬件AES 加解密
基于CH57x系列ble的库,暂时只支持AES128-ECB模式
使用
int i = 0;
// 加密秘钥 16个字节也就是128 bit
uint8 key[16] = {0X00,0X11,0X22,0X33,0X44,0X55,0X66,0X77,0X88,0X99,0XAA,0XBB,0XCC,0XDD,0XEE,0XFF};
// 需要加密的数据(保证16个字节,不够的自己填充)
uint8 source_buf[16] = {0X00,0X01,0X02,0X03,0X04,0X05,0X06,0X07,0X08,0X09,0X0A,0X0B,0X0C,0X0D,0X0E,0X0F};
// 加密后数据存放区
uint8 encrypted_buf[16];
// 解密后数据存放区
uint8 deccrypted_buf[16];
// 开始加密,加密后的数据存放到encrypted_buf,
LL_Encrypt( key, source_buf, encrypted_buf );
// 开始解密,将解密后的数据存到deccrypted_buf,ch579 11us
LL_Decrypt( key, encrypted_buf, deccrypted_buf );
//打印原始数据
PRINT("source:");
for(i = 0;i < 16;i++) {
PRINT("0x%02x ",source_buf);
}
PRINT("rn");
//打印加密后的数据
PRINT("encrypte:");
for(i = 0;i < 16;i++) {
PRINT("0x%02x ",encrypted_buf);
}
PRINT("rn");
//打印解密后的数据
PRINT("deccrypte:");
for(i = 0;i < 16;i++) {
PRINT("0x%02x ",deccrypted_buf);
}
PRINT("rn");
运行结果:
1
2
3
source:0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f
encrypte:0x27 0x9f 0xb7 0x4a 0x75 0x72 0x13 0x5e 0x8f 0x9b 0x8e 0xf6 0xd1 0xee 0xe0 0x03
deccrypte:0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f
在python 中验证
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad
def ToHexStr(data):
if type(data) == type([1,]):
bytes_data = ToBytes(data)
return bytes_data.hex()
elif type(data) == type(b'x00'):
return data.hex()
else:
print("only 'list' or 'bytes' is valid!")
return None
# 要加密的内容
data = bytes([0X00,0X01,0X02,0X03,0X04,0X05,0X06,0X07,0X08,0X09,0X0A,0X0B,0X0C,0X0D,0X0E,0X0F])
# 密钥
key = bytes([0X00,0X11,0X22,0X33,0X44,0X55,0X66,0X77,0X88,0X99,0XAA,0XBB,0XCC,0XDD,0XEE,0XFF])
print("要加密的数据:")
print(ToHexStr(data))
print("加密后的密钥:")
print(ToHexStr(key))
# 实例化加密套件,使用ECB模式
cipher = AES.new(key, AES.MODE_ECB)
#加密
encrypted_data = cipher.encrypt(data)
print("加密后的数据:")
print(ToHexStr(encrypted_data))
#解密
decrypted_data = cipher.decrypt(encrypted_data)
print("解密后的数据:")
print(ToHexStr(decrypted_data))
结果:
要加密的数据:
000102030405060708090a0b0c0d0e0f
加密后的密钥:
00112233445566778899aabbccddeeff
加密后的数据:
279fb74a7572135e8f9b8ef6d1eee003
解密后的数据:
000102030405060708090a0b0c0d0e0f
ch57x 硬件AES 加解密
基于CH57x系列ble的库,暂时只支持AES128-ECB模式
使用
int i = 0;
// 加密秘钥 16个字节也就是128 bit
uint8 key[16] = {0X00,0X11,0X22,0X33,0X44,0X55,0X66,0X77,0X88,0X99,0XAA,0XBB,0XCC,0XDD,0XEE,0XFF};
// 需要加密的数据(保证16个字节,不够的自己填充)
uint8 source_buf[16] = {0X00,0X01,0X02,0X03,0X04,0X05,0X06,0X07,0X08,0X09,0X0A,0X0B,0X0C,0X0D,0X0E,0X0F};
// 加密后数据存放区
uint8 encrypted_buf[16];
// 解密后数据存放区
uint8 deccrypted_buf[16];
// 开始加密,加密后的数据存放到encrypted_buf,
LL_Encrypt( key, source_buf, encrypted_buf );
// 开始解密,将解密后的数据存到deccrypted_buf,ch579 11us
LL_Decrypt( key, encrypted_buf, deccrypted_buf );
//打印原始数据
PRINT("source:");
for(i = 0;i < 16;i++) {
PRINT("0x%02x ",source_buf);
}
PRINT("rn");
//打印加密后的数据
PRINT("encrypte:");
for(i = 0;i < 16;i++) {
PRINT("0x%02x ",encrypted_buf);
}
PRINT("rn");
//打印解密后的数据
PRINT("deccrypte:");
for(i = 0;i < 16;i++) {
PRINT("0x%02x ",deccrypted_buf);
}
PRINT("rn");
运行结果:
1
2
3
source:0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f
encrypte:0x27 0x9f 0xb7 0x4a 0x75 0x72 0x13 0x5e 0x8f 0x9b 0x8e 0xf6 0xd1 0xee 0xe0 0x03
deccrypte:0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f
在python 中验证
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad
def ToHexStr(data):
if type(data) == type([1,]):
bytes_data = ToBytes(data)
return bytes_data.hex()
elif type(data) == type(b'x00'):
return data.hex()
else:
print("only 'list' or 'bytes' is valid!")
return None
# 要加密的内容
data = bytes([0X00,0X01,0X02,0X03,0X04,0X05,0X06,0X07,0X08,0X09,0X0A,0X0B,0X0C,0X0D,0X0E,0X0F])
# 密钥
key = bytes([0X00,0X11,0X22,0X33,0X44,0X55,0X66,0X77,0X88,0X99,0XAA,0XBB,0XCC,0XDD,0XEE,0XFF])
print("要加密的数据:")
print(ToHexStr(data))
print("加密后的密钥:")
print(ToHexStr(key))
# 实例化加密套件,使用ECB模式
cipher = AES.new(key, AES.MODE_ECB)
#加密
encrypted_data = cipher.encrypt(data)
print("加密后的数据:")
print(ToHexStr(encrypted_data))
#解密
decrypted_data = cipher.decrypt(encrypted_data)
print("解密后的数据:")
print(ToHexStr(decrypted_data))
结果:
要加密的数据:
000102030405060708090a0b0c0d0e0f
加密后的密钥:
00112233445566778899aabbccddeeff
加密后的数据:
279fb74a7572135e8f9b8ef6d1eee003
解密后的数据:
000102030405060708090a0b0c0d0e0f
举报