Сопоставление реализации Java BlowfishJ с реализацией javascript dren blowfish; значения шифрования после 8-байтов отличаются

У меня возникли проблемы с сопоставлением реализации Java BlowsfishJ (BlowfishJ Javadoc) на реализацию JavaScript dren Blowfish (страница dren Blowfish).

На стороне Java я использую Blowfish CBC с нулевым IV и ключом somekey. Открытый текст — WillThisEQ.

Что касается JavaScript, я ПРЕДПОЛАГАЮ, что реализация dren также использует CBC и нулевой IV. Ключ — somekey, а открытый текст — WillThisEQ.

Вот код JavaScript:

var bf = new Blowfish('some key');
var ciphertext = bf.encrypt('WillThisEQ');
var plaintext = bf.decrypt(ciphertext);

Для зашифрованного текста первые 8 байтов совпадают для обеих реализаций (WillThis). Однако все последующие байты НЕ совпадают (EQ000000). IV учитывается в первом блоке (страница Википедии о режимах блочного шифрования). Так что я не думаю, что это проблема.

Как я могу совместить эти две реализации?

Большое спасибо за любую помощь.


person user717236    schedule 12.10.2012    source источник


Ответы (2)


Ваш ответ находится в самом верху страницы dren BlowFish, на которую вы ссылались:

Вам нужно внедрить собственную цепочку шифровальных блоков, если вы хотите зашифровать что-либо длиннее 8 байтов.

Так что нет, это не CBC. Вы можете попробовать версию BlowfishJ для ECB, но безопасность намного хуже.

person Brendan Long    schedule 12.10.2012
comment
Большое тебе спасибо. +1 за понимание прочитанного. Итак, мне пришлось бы написать свой собственный CBC для JS. Должно быть, поэтому его реализацию рекомендуется не использовать ни для чего серьезного. Будет ли версия BlowfishJ для ECB работать с его реализацией? - person user717236; 12.10.2012
comment
@user717236 user717236 На странице не ясно, будут ли они работать вместе, но попробовать стоит. Похоже, CBC не так уж и сложен, вам просто нужно установить IV на особое значение для каждого блока. - person Brendan Long; 12.10.2012
comment
Да, мне придется написать свой собственный CBC. Я подтвердил, что версия ECB отличается. Реализация JS шифрует только первый 8-байтовый блок и НЕ использует ECB. - person user717236; 12.10.2012

Вот версия Blowfish для Dojo. Работает на меня. http://sladex.org/blowfish.js/

person Sladex    schedule 22.10.2012