Шифрование в java (jasypt) и дешифрование в nodejs

Я пытаюсь расшифровать закодированную строку (которая на самом деле закодирована в java с использованием провайдера bouncyCastle). Поскольку я не вижу эквивалентного алгоритма для «PBEWITSHA256AND256BITAES-CBC-BC» в nodejs. Не могли бы вы предложить мне, как я могу расшифровать зашифрованное значение (которое было зашифровано в java) в nodejs.

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

Из Явы: Ниже приведен подход

  1. провайдер bouncyCastle
  2. Алгоритм № PBEWITSHA256AND256BITAES-CBC-BC
  3. encodedOutputType как "Hex"

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

Из Нодейс: Я попытался расшифровать с помощью пакета nodejs-crypto.

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

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

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
981
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Эта схема PBE не является экземпляром PBKDF2 (PKCS8); это пример схемы PKCS12 PBE, которая похожа по концепции, но сильно отличается в деталях, которые жизненно важны для криптографии. Вы можете "легко" сказать это, посмотрев 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), который мне кажется правильным при быстром сканировании (но не тестировался).

Спасибо за ваш ответ, Дейв, я посмотрю и попытаюсь сгенерировать ключ и iv, используя forge.pbe.generatepkcs12Key, и проверю то же самое. я обнаружил, что основная проблема связана со значениями ключа и iv при сравнении с java и nodejs.

user3569397 23.01.2019 04:17

Привет, Дэйв, я столкнулся с некоторыми проблемами при попытке расшифровать с помощью Forge. мое зашифрованное сообщение представляет собой массив байтов, когда я попытался преобразовать его в forge.util.createBuffer, он возвращает значение данных как пустое. forge.util.createBuffer (зашифрованное сообщение)

user3569397 23.01.2019 04:55

Большое спасибо за вашу помощь, Дэйв, это сработало для меня. использование forge.pbe.generatePkcs12Key предоставило успешный ключ и iv и теперь смогло расшифровать данные.

user3569397 23.01.2019 19:38

Другие вопросы по теме