Сгенерируйте ключ RSA с помощью openssl:
openssl genrsa -out rsa.pem 2048
Преобразование ключа RSA из формата PEM в формат DER:
openssl rsa -inform PEM -in rsa.pem -outform DER -out rsa.der
Откройте файл rsa.der в Редакторе ASN.1:
![Файл rsa.der открыт в редакторе ASN.1](https://i.stack.imgur.com/LdNRo.png)
Структура закрытого ключа RSA ASN.1 определена в PKCS#1 (RFC 3447):
RSAPrivateKey ::= SEQUENCE {
version Version,
modulus INTEGER, -- n
publicExponent INTEGER, -- e
privateExponent INTEGER, -- d
prime1 INTEGER, -- p
prime2 INTEGER, -- q
exponent1 INTEGER, -- d mod (p-1)
exponent2 INTEGER, -- d mod (q-1)
coefficient INTEGER, -- (inverse of q) mod p
otherPrimeInfos OtherPrimeInfos OPTIONAL
}
Отредактируйте необходимые поля в редакторе ASN.1 (щелкните элемент правой кнопкой мыши и выберите «Редактировать в шестнадцатеричном режиме») и вставьте свои данные, следуя этому сопоставлению:
MODULUS = modulus
PUBLIC EXP = publicExponent
PRIVATE EXP = privateExponent
PRIME_P = prime1
PRIME_Q = prime2
PARAM_P = exponent1
PARAM_Q = exponent2
Q_MOD_INV = coefficient
Редактировать с учетом комментариев. Отдельные части закрытого ключа представляют собой большие целые числа. Когда крайний левый бит значения равен 1 (или крайний левый байт равен или больше 0x80), тогда к значению необходимо добавить байт 0x00, чтобы указать, что это положительное число.
Наконец, сохраните измененный файл и преобразуйте его из формата DER в формат PEM с помощью openssl:
openssl rsa -inform DER -in rsa.der -outform PEM -out rsa.pem
person
jariq
schedule
27.02.2014