Как использовать publicExponent как 65537 в алгоритме RSA-OAEP в JavaScript - PullRequest
0 голосов
/ 04 июля 2018

На самом деле я использую RSA-OAEP с SHA-256ANDMGF1PADDING для шифрования и дешифрования в javascript с использованием Web crypto API. Фактический сценарий, который мне нужно сделать, в Java, я могу зашифровать и расшифровать, используя открытый и закрытый ключ с одинаковыми спецификациями алгоритма. но там он использует 65537 открытый показатель. Теперь мне нужно зашифровать некоторое сообщение в javascript с помощью открытого ключа и расшифровать его в java. но я обнаружил, что в javascript для вышеупомянутой спецификации алгоритма он использует открытый показатель степени как 5. поэтому я хочу изменить его на 65537. Я попытался использовать следующий код в javascript.

  window.crypto.subtle.generateKey({
     name: "RSA-OAEP",
     modulusLength: 2048,
     publicExponent: new Uint8Array([0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 0x01]),
     hash: {name: "SHA-256"},
    }, 
true, 
 ["encrypt", "decrypt"]);

но все же, открытый показатель сгенерированного открытого ключа равен 5. что я делаю неправильно? И последнее требование от меня: зашифровать некоторые сообщения в javascript с использованием RSA-OAEP с SHA-256ANDMGF1PADDING и которые смогут расшифровывать в java с помощью закрытого ключа и наоборот.

1 Ответ

0 голосов
/ 04 июля 2018

Используйте это. Это эквивалентно 65437

 publicExponent: new Uint8Array([0x01, 0x00, 0x01])

publicExponent - это BigInteger Каждый элемент в массиве uint8 является неотрицательным целым числом в диапазоне 0..256

  1. BigInteger

    typedef Uint8Array BigInteger;

BigInteger typedef является массивом Uint8, который содержит произвольное целое число без знака в порядке с прямым порядком байтов.

[0x01, 0x00, 0x01] = 00000001 00000000 00000001 = 65537
...