Я пытаюсь реализовать оболочку AES-OFB вокруг AES CNG для симметричного шифрования.
Я столкнулся с проблемой, которую не могу понять ... Я создал дескриптор алгоритма AES (BCRYPT_AES_ALGORITHM) и импортировал ключ AES. Затем я пытаюсь сгенерировать 16-байтовый поток ключей для использования с XORing моего открытого / зашифрованного текста. В первый раз, когда я запускаю этот механизм, keyStreamPtr изменяется с некоторого случайного потока байтов на другой, однако, в 3-й раз, когда я делаю это (3-й набор из 16 байтов ключевого потока), я начинаю получать один и тот же вывод, и это происходит вечно.
status = BCryptEncrypt((BCRYPT_KEY_HANDLE)keyHandle,
keyStreamPtr,
keyStreamLength,
NULL, //no padding
NULL, // no IV
0, // no IV
keyStreamPtr,
keyStreamLength,
&Length,
0); // no option flags
Кто-нибудь видел что-нибудь подобное? почему AES будет возвращать зашифрованный текст, полностью идентичный открытому тексту, который был введен? Опять же, это для реализации AES-OFB ... Возможно, я делаю что-то не так?