У меня возникли проблемы с сопоставлением реализации 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 учитывается в первом блоке (страница Википедии о режимах блочного шифрования). Так что я не думаю, что это проблема.
Как я могу совместить эти две реализации?
Большое спасибо за любую помощь.