2011-11-11 1 views
1

Я пытаюсь зашифровать строку с Rijndael (KeySize 256 бит, 256 бит размера блока, режим CFB) В настоящее время я делаю что-то вроде этого:Как я могу зашифровать Rijndael с помощью режима CFB, Blocksize из 256 бит и Bouncycastle?

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

Я могу зашифровать и расшифровать свой собственный материал просто хорошо. К сожалению, строка, которую я должен расшифровать, происходит от mcrypt в php.

Я не могу расшифровать эту строку, и я думаю, что сбой на моей стороне. может ли кто-нибудь дать мне пример, как настроить шифр с требуемыми параметрами?

EDIT:

следующие несколько советов здесь и в комментариях PHP документации. я изменил свой шифр на:

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

все еще шифрование несовместимо.

EDIT 2

получил это работает в режиме CBC. Я предполагаю, что проблема находится где-то в iv.

+0

Я сделал шифрование/дешифрование php-java, и мне было трудно это сделать. Насколько я помню, мне приходилось выполнять добавление ввода, чтобы работать с перекрестным шифрованием/расшифровкой. – Manish

+0

похоже пудинг не проблема. – Laures

+0

Вы уверены, что используете тот же IV в Java, что и в PHP? Также читайте: 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 - это размер блока chiffre, который будет работать, но mcrypt использует размер блока 8 бит для CFB.

Смежные вопросы