2012-02-27 9 views
2

私は対称暗号化のためにCNGのAESの周りにAES-OFBラッパーを実装しようとしています。Microsoft CNG BCryptEncryptは暗号文を返す==プレーンテキスト

私は理解できない問題に遭遇しました...私はAESアルゴリズムハンドル(BCRYPT_AES_ALGORITHM)を作成し、AESキーをインポートしました。私は私の平文/暗号文をXORするための16バイトのキーストリームを生成しようとします。このメカニズムを最初に実行すると、keyStreamPtrがランダムなバイトストリームから別のランダムなバイトストリームに変更されますが、3回目(キーストリームの16バイトの3番目のセット)、同じ出力が得られ始め、永遠に起こります。

  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の実装です...おそらく私は何か間違っていますか?

答えて

0

私が考えることができるのは、キーストリームを再度暗号化することだけです。これを行うと、効果的に暗号化/復号化が実行されます。P XOR C XOR C = Pここで、Cはキーストリーム、Pはプレーンテキストです。あなたのコード内のバッファ/ストリーム処理を見たいかもしれません。

関連する問題