2013-01-31 9 views
3

Так что я использую node crypto library, чтобы расшифровать двоичный файл, зашифрованный другим программным обеспечением, с которым я не контролирую. Используя следующий код, я могу расшифровать его успешно:node crypto decipher final fail

decipher = crypto.createDecipheriv('aes-128-ecb', password, iv); 
decrypted = decipher.update(body, 'binary', 'utf8'); 

Это замечательно, однако оказывается есть укороченные с конца моего расшифрованного текста около 11 символов. Что странно, потому что это более 11200 символов открытого текста. Теперь я подозреваю, что причина в том, что у меня нет этой линии:

decrypted += decipher.final('utf8'); 

Однако, если добавить эту строку, я получаю ошибку TypeError: DecipherFinal fail

Я пробовал различные выходные кодировок и без IV, но не повезло. Я также прочитал этот вопрос: What's wrong with nodejs crypto decipher?, который похож на ту же проблему, однако я не понимаю шаги, которые я должен взять в командной строке openssl, или как это повлияет на мою программу на узле.

ответ

4

Вы пробовали установить автоматическое заполнение на false? По умолчанию он устанавливает значение true (см. Ниже), поэтому, если другая сторона не использует пэд с использованием дополнения по умолчанию (что бы это ни было, возможно, заполнение PKCS # 7), тогда результат должен завершиться неудачно ...

decipher.setAutoPadding(auto_padding=true)

+0

спасибо! Раньше я общался с этой настройкой, но мне не повезло. Что-то еще должно было измениться, так как установить его на ложное исправление этой проблемы. – captainclam

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