我正在尝试围绕 CNG 的 AES 实现对称加密的 AES-OFB 包装器。
我遇到了一个我无法理解的问题...我创建了一个 AES 算法句柄 (BCRYPT_AES_ALGORITHM) 并导入了一个 AES 密钥。然后我尝试生成一个 16 字节的密钥流,用于对我的明文/密文进行异或运算。我第一次运行这种机制时,keyStreamPtr 从某个随机字节流变为另一个,但是,第三次这样做(第三组 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 实现的……也许我做错了什么?