使用 AES 和 Crypto++ 加密解密单个块

2023-11-23

我需要加密单个 AES 块。我无法使用 CBC 等任何模式。我见过的每个例子都使用流模式。

编辑: 好吧,我用下一种方式做到了,但我真的不喜欢这种尝试。

void dec(const byte *key, const byte* xblock, const byte *cipher, byte *plain) {
    AESDecryption d;

    try {
        const NameValuePairs &nvp = MakeParameters("", 0);
        d.UncheckedSetKey(key, 16, nvp);
        d.ProcessAndXorBlock(cipher, xblock, plain);
    }
    catch(...) {}
}

ECB 模式下的 AES 与单块加密相同,只是您可以为其提供多个块。

如果您只有 CBC 模式加密可用,则可以使用 CBC 加密的第一个块,该块使用包含全值为零的字节的(块大小)IV。计数器 (CTR) 模式加密和包含全部为零的字节的随机数也是如此(计数器仅在第一个块加密后增加)。

Crypto++似乎是更高级别的Crypto API,因此最好不要直接调用AES实现。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 AES 和 Crypto++ 加密解密单个块 的相关文章

随机推荐