完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
|
|
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 |
|
|
|
只有小组成员才能发言,加入小组>>
453 浏览 1 评论
CH579M+RT-Thread,RTC从Sleep模式唤醒失败是什么原因?
2865 浏览 2 评论
2351 浏览 1 评论
798浏览 2评论
CH569通过HSPI实现USB3.0和FPGA高速双向通讯
624浏览 1评论
487浏览 1评论
CH32F103C8T6使用当前官网上的CDC例程会出现设备描述符请求失败
350浏览 1评论
625浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-19 02:19 , Processed in 0.837273 second(s), Total 51, Slave 44 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号