Эквивалент Java RSA / ECB / OAEPWithSHA-256AndMGF1Padding в Node.js - PullRequest
0 голосов
/ 18 декабря 2018

Расшифровка данных будет выполняться в JAVA с использованием алгоритма RSA/ECB/OAEPWithSHA-256AndMGF1Padding.Поэтому я должен зашифровать данные открытым ключом, используя алгоритм, эквивалентный RSA/ECB/OAEPWithSHA-256AndMGF1Padding в node.js.

Я пытался с crypto.publicEncrypt(key, buffer), который использует crypto.constants.RSA_PKCS1_OAEP_PADDING, который не похож на вышеупомянутый алгоритм.Поэтому мне нужен алгоритм, эквивалентный «RSA / ECB / OAEPWithSHA-256AndMGF1Padding» или как этого добиться в файле node.js

Ответы [ 2 ]

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

Я наконец нашел ответ.Эквивалент «RSA / ECB / OAEPWithSHA-256AndMGF1Padding» может быть достигнут через модуль npm-forge-node-forge.https://www.npmjs.com/package/node-forge#rsa

    // encrypt data with a public key using RSAES-OAEP/SHA-256/MGF1-SHA-1
// compatible with Java's RSA/ECB/OAEPWithSHA-256AndMGF1Padding
var encrypted = publicKey.encrypt(bytes, 'RSA-OAEP', {
  md: forge.md.sha256.create(),
  mgf1: {
    md: forge.md.sha256.create()
  }
});

Спасибо

0 голосов
/ 18 декабря 2018

Во-первых, вы не должны использовать шифр режима "ECB", потому что:

  1. ECB - это режим блочного шифрования, RSA не является алгоритмом, основанным на этом режиме работы.
  2. Если вы используете алгоритм, основанный на этом режиме работы (например, AES), вы не должны использовать ECB, потому что у него нет IV (Вектор инициализации), поэтому он небезопасен и криптоанализатор может взломать шифр,Вы можете использовать CBC, он имеет IV или GCM, если вы хотите поделиться конфиденциальной информацией с внешними системами и предотвратить Oracle Padding.Я рекомендую вам посетить следующую ссылку:

MSC61-J.Не используйте небезопасные или слабые криптографические алгоритмы

Итак, в этом случае вам просто нужно использовать OAEP для шифрования RSA, потому что это схема заполнения и она помогает предотвратить Oracle Padding для асимметричных алгоритмов, затемизмените свой код на: RSA/None/OAEPWithSHA-256AndMGF1Padding.Может быть, вы могли бы получить совместимость с Node.js.Кроме того, я рекомендую вам посетить официальный веб-сайт:

Справочное руководство JCA

Надеюсь, эта информация поможет вам.

Удачи.

...