шифрование-дешифрование одного блока с помощью AES и Crypto++

Мне нужно зашифровать один блок 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(...) {}
}

person Yola    schedule 18.06.2012    source источник
comment
Вам нужен режим ECB.   -  person President James K. Polk    schedule 18.06.2012
comment
@GregS, нет)) Я хочу сделать режим сам, мне нужно закодировать один блок примитивом AES.   -  person Yola    schedule 18.06.2012
comment
Вот что значит режим ECB!! Это просто шифрование одного блока с использованием примитива AES.   -  person President James K. Polk    schedule 19.06.2012
comment
@GregS Нет, это не так. Режим ECB может принимать несколько блоков, но шифрование блоков не зависит ни от каких других блоков. И это может быть небезопасно, если данные в любом из блоков связаны.   -  person Maarten Bodewes    schedule 29.12.2012


Ответы (1)


AES в режиме ECB идентичен одноблочному шифрованию, за исключением того, что вы можете передать ему несколько блоков.

Если у вас есть доступ только к шифрованию в режиме CBC, вы можете использовать первый блок шифрования CBC с использованием IV (размера блока), содержащего байты, все значения которых равны нулю. То же самое относится к шифрованию в режиме счетчика (CTR) и одноразовому номеру, содержащему байты, все значения которых равны нулю (счетчик увеличивается только после шифрования первого блока).

Crypto++ кажется Crypto API более высокого уровня, поэтому лучше не напрямую вызывать реализацию AES напрямую.

person Maarten Bodewes    schedule 29.12.2012
comment
Если этот ответ приемлем для вас, Йола, если нет, укажите, чего не хватает. Пожалуйста, примите ответы, если это возможно, иначе они останутся открытыми и останутся в стеке вопросов без ответов. - person Maarten Bodewes; 19.01.2013