2011-11-11 15 views
1

私は 現在、私はこのような何かやってる(CFBモード、256ビットのブロックサイズ、256ビットのキーサイズ)ラインダールの文字列を暗号化しようとしている:私はちょうど私自身のものを暗号化および復号化することができますRijndaelをCFBモード、ブロックサイズ256ビット、Bouncycastleで暗号化するにはどうすればよいですか?

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

を良い。残念ながら私は解読しなければならない文字列はPHPのmcryptから来ます。

私はこの文字列を解読できません。私は失敗が私の側にあると思います。誰も私に、必要なパラメータで暗号を設定する方法の例を教えてもらえますか?

EDIT:

こことPHPのドキュメンテーションコメントにいくつかのアドバイスを以下に示します。まだ暗号化は互換性がありません

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

:私は私にCYPHERを変えました。

EDIT 2

それはCBCモードで作業しました。私は問題がivのどこかにあると思う。

+0

私はphp-javaの暗号化/復号化を行いました。私が覚えている限り、相互暗号化/復号化を動作させるためには、入力のパディングを行う必要がありました。 – Manish

+0

のようなパディングが問題ではなかったようです。 – Laures

+0

PHPで同じIVをJavaで使用していますか?また、読む:http://stackoverflow.com/questions/7821678/any-equivalent-for-mcrypt-in-php-to-use-in-java/7823385#7823385 – NullUserException

答えて

2
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ビットのブロックサイズを使用します。

関連する問題