c++ - 使用 AES 和 Crypto++ 加密解密单个 block

标签 c++ cryptography crypto++ block-cipher

我需要加密单个 AES block 。我不能使用任何模式,如 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 与单 block 加密相同,只是您可以为其提供多个 block 。

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

Crypto++好像是一个更高层的Crypto API,所以最好不要直接调用AES实现。

关于c++ - 使用 AES 和 Crypto++ 加密解密单个 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11082432/

相关文章:

c++ - 在 Windows API 中重置 OpenGL 扩展指针

php - 使用 SSL 证书进行加密与生成的 key

c++ - 在集合中查找结构 vector

c++ - 用于实时应用程序的 FEM 库

java - 一种在不同语言/平台中使用 Openssl 的方法

python - Crypto++ 和 Python 之间的 Diffie-Hellman key 交换

c++ - 声明相同类型的变量并重用它们

c++ - 为什么 Crypto++ 和 Ruby 生成的 SHA-1 哈希略有不同?

c++ - glBlendFunc 和 alpha 混合

swift - 如何生成用于不记名 token 的加密安全随机数?