使用WolfCrypt在ECB模式下进行AES

时间:2016-04-27 03:06:40

标签: c encryption aes ecb wolfssl

我在桌面软件中使用OpenSSL,在嵌入式版本中使用WolfCrypt(也是开源)。对于这个项目,我必须在ECB模式下使用AES,即使我知道ECB不是AES最安全的操作模式。根据这个线程(断开链接),WolfCrypt支持ECB模式,即使它没有正确记录。

我可以在OpenSSL中编码和解码数据而不会出现问题,但我无法在WolfCrypt中这样做。似乎wolfCrypt在ECB模式下有192和256位长的密钥(但它似乎与128位长密钥一起使用)。我使用以下代码注意到了这种行为。此代码对一大块数据进行加密,对其进行解密并将结果与​​原始数据进行比较。如果数据匹配,则显示成功消息。只有128位长的密钥似乎能产生正确的结果。

我使用WolfSSL 3.8.0在VS 2013(Windows 7)中测试了此代码。

我在这里做错了什么,或者WolfCrypt真的错了?

showMenuform

1 个答案:

答案 0 :(得分:2)

请勿混淆密钥大小和块大小。 AES支持128,192和256位的密钥,但固定块大小为128位。块大小也是CBC模式的IV大小,但是ECB模式没有IV,这部分是为什么它如此糟糕。

您需要按块大小而不是按键大小来推进循环:

int block_length = BITS_TO_BYTES(128);
for (int i = 0; i < DATA_LENGTH; i += block_length) {...}