This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC3220SF-LAUNCHXL:AES -加密/解密最后一个填充块问题

Guru**** 2559250 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/980056/cc3220sf-launchxl-aes---encrypt-decrypt-last-chunk-padding-issue

器件型号:CC3220SF-LAUNCHXL

您好!

我正在尝试加密和解密加载到文件系统的大(~250KB)二进制 MCU 映像。

示例方案类似于 普通二进制-->加密二进制--> >解密二进制(最后解密的二进制数应等于普通二进制数)。

 

由于存储器限制、我正在尝试按文件的块数据(每个块256字节)对块进行加密和解密。

加密方案1:读取256 KB 正常二进制数据加密并存储到 FS。 (重复此操作、直到整个 Normal 二进制文件加密)。
解密方案2:读取256 KB 加密数据解密并存储到 FS。(重复此操作、直到解密完完整的加密二进制文件)。


问题是最终解密的二进制文件的最后一个块不等于正常二进制文件。 二进制数据的最后一个块已损坏。

请检查以下实际二进制数据与解密二进制数据之间的比较。

我是否有任何标准方法可以处理 AES 加密/解密的最后一个数据块。  

正常的二进制文件大小为 2,08,515字节。

请查找 AES 配置:

#define PVT_KEY "abcdefghijklmn12"
CryptoCC32XX_handle crypto_handle;
CryptoCC32XX_EncryptMethod method = CryptoCC32XX_AES_ECB;//不需要 IV
CryptoCC32XX_EncryptParams Params;


params.AES.keysize = CryptoCC32XX_AES_KEY_SIZE_128bit;
params.AES.pkey =(const uint8_t *) PVT_key;//目标密钥长度应作为目标密钥大小
//params.AES.pIV =(void *) PointerToInitVector; 

注意:我还尝试了使用 相同二进制文件的在线 AES 加密/解密(aes.online-domain-tools.com/)、但仍然发现了相同的问题。

请帮助我解决问题。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    因为 AES 是一个块密码、因此您需要在最后一个块处使用填充。

    BTW... ECB 模式的使用不会被重新指令、因为它容易受到重放攻击。 如果您将使用 ECB 加密更多次不同的数据、这将是一个安全漏洞。

    1月