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

C++ 使用AES和Crypto+加密解密单个块+;,c++,cryptography,crypto++,block-cipher,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);

我需要加密单个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模式加密可用,则可以使用包含所有值为零的字节的(块大小)IV使用CBC加密的第一个块。计数器(CTR)模式加密和包含所有值为零的字节的nonce也是如此(计数器仅在第一次块加密后增加)


Crypto++似乎是更高级的加密API,所以最好不要直接调用AES实现。

你想要。@GregS,否))我想自己做模式,我需要用AES原语编码一个块。这就是ECB模式的意思!!它只是使用AES原语加密一个块。@GregS不,不是。ECB模式可接受多个块,但块的加密不依赖于任何其他块。如果任何数据块中的数据都是相关的,这可能是不安全的。Yola,这个答案对你来说可以接受吗?如果不能,请指出遗漏了什么。如果可能的话,请接受答案,否则答案将被保留在未回答的问题堆中。