대칭 암호화를 위해 CNG의 AES 주변에 AES-OFB 래퍼를 구현하려고합니다.Microsoft CNG BCryptEncrypt 반환하는 암호문 == plaintext
내가 이해할 수없는 문제가 발생했습니다 ... AES 알고리즘 핸들 (BCRYPT_AES_ALGORITHM)을 만들고 AES 키를 가져 왔습니다. 다음 내 평문/암호문을 XORing과 함께 사용하기 위해 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 구현을위한 것입니다 ... 아마도 나는 잘못된 것을하고 있습니까?