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

时间:2012-06-18 12:03:08

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

我需要加密单块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(...) {}
}

1 个答案:

答案 0 :(得分:4)

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

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

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