Шифрование в java (jasypt) и дешифрование в nodejs - PullRequest
0 голосов
/ 22 января 2019

Я пытаюсь расшифровать закодированную строку (которая на самом деле кодируется в Java с помощью поставщика bouncyCastle).Поскольку я не вижу никакого эквивалентного алгоритма для "PBEWITHSHA256AND256BITAES-CBC-BC" в nodejs.Не могли бы вы предложить мне, как я могу расшифровать значение encryptedValue (которое было зашифровано в Java) в nodejs.

Я пробовал несколько подходов, но не смог найти решение.

Из Java: нижеэто подход

  1. поставщик bouncyCastle
  2. Algo # PBEWITHSHA256AND256BITAES-CBC-BC
  3. encodedOutputType как "Hex"

мы получилирезультат возвращается в виде строки, которая является шестнадцатеричной строкой.

От Nodejs: я пытался расшифровать, используя пакет nodejs-crypto.

  1. Преобразовал обратно в значения массива из шестнадцатеричной строки
  2. Использовал pbkdf2sync для создания ключа, используя sha256
  3. , пытался расшифровать данные с помощью crypto.createDecipherIv, но каким-то образом не смог расшифровать в nodejs.

Может кто-нибудь предложить мнеподход.

1 Ответ

0 голосов
/ 23 января 2019

Эта схема PBE не является экземпляром PBKDF2 (PKCS8); это пример схемы PBE PKCS12, которая похожа по своей концепции, но очень отличается по деталям, что жизненно важно для криптографии. Вы можете «легко» сказать это, посмотрев OID: https://www.bouncycastle.org/oids.html: -)

Я не вижу никаких намеков на то, что nodejs-crypto представляет эту схему или PKCS12, хотя она внутренне использует OpenSSL, который реализует оба.

Вы можете написать его самостоятельно, следуя спецификации в RFC 7292, Приложение B и C (которая на самом деле все еще широко используется, хотя в документе говорится, что она устарела).

В качестве альтернативы https://github.com/digitalbazaar/forge (чистый js) поддерживает использование PKCS12 из неназванного (внутреннего) модуля forge.pbe.generatePkcs12Key (на самом деле это ключи и IV), что мне кажется правильным при быстром сканировании ( но не проверено).

...