3

私はrijndael(キーサイズ256ビット、ブロックサイズ256ビット、CFBモード)で文字列を暗号化しようとしています。現在、次のようなことをしています。

BufferedBlockCipher c = new BufferedBlockCipher(new CFBBlockCipher(new RijndaelEngine(256), 256));
    c.init(false, new ParametersWithIV(new KeyParameter(keybytes), iv));

自分のものをうまく暗号化および復号化できます。残念ながら、私が解読しなければならない文字列は、phpのmcryptから来ています。

この文字列を復号化できません。失敗は私の側にあると思います。必要なパラメータを使用して暗号を構成する方法の例を教えてもらえますか?

編集:

こことphpドキュメントのコメントでいくつかのアドバイスに従ってください。サイファーを次のように変更しました。

PaddedBufferedBlockCipher c = new PaddedBufferedBlockCipher(new CFBBlockCipher(new RijndaelEngine(256)), new ZeroBytePadding());

それでも暗号化には互換性がありません。

編集2

CBCモードで動作するようになりました。問題はivのどこかにあると思います。

4

1 に答える 1

3
PaddedBufferedBlockCipher c = new PaddedBufferedBlockCipher(new CFBBlockCipher(new RijndaelEngine(256), 8), new ZeroBytePadding());
c.init(false, new ParametersWithIV(new KeyParameter(keybytes), iv));

これでうまくいきました。すべての例とチュートリアルでは、CFBBlockCipherオブジェクトの2番目のパラメーターはchiffreのブロックサイズであると述べていますが、これは機能しますが、mcryptはCFBに8ビットのブロックサイズを使用します。

于 2011-11-14T13:00:12.863 に答える