Я не очень понимаю это:
Согласно: http://www.madboa.com/geek/openssl/#key-rsa , Вы можете создать открытый ключ из закрытого ключа.
openssl genrsa -out mykey.pem 1024
openssl rsa -in mykey.pem -pubout > mykey.pub
Сначала я думал, что они создаются в паре вместе. Закрытый ключ RSA содержит сумму? или открытый ключ?
Ответы:
фактически создаст пару открытый - закрытый ключ. Пара сохраняется в сгенерированном
mykey.pem
файле.извлечет открытый ключ и распечатает его. Вот ссылка на страницу, которая описывает это лучше.
РЕДАКТИРОВАТЬ: Проверьте раздел примеров здесь . Чтобы просто вывести открытую часть закрытого ключа:
Чтобы получить пригодный для использования открытый ключ для целей SSH, используйте ssh-keygen :
источник
e
иd
в обычной литературе). Ни один из них не является математически частным или общедоступным, это ярлыки, которые произвольно назначаются при создании. Их можно так же легко назначить в обратном порядке. Создание одного из другого является эквивалентной проблемой..pem
Формат содержит целую кучу информации, в том числе обоих показателей, так как ключи, правильно?openssl genrsa
команды. Отдельный файл открытого ключа не создается на том же этапе. Чтобы извлечь открытый ключ из файла закрытого ключа в отдельный файл открытого ключа, используйте вашуopenssl rsa -in private.pem -pubout -out public.pem
команду. Когда вы создаете открытый ключ таким образом, он извлекается из файла закрытого ключа, а не вычисляется. Смотрите мой ответ ниже для более подробной информации.Люди ищут SSH открытый ключ ...
Если вы хотите извлечь открытый ключ для использования с OpenSSH, вам нужно будет получить открытый ключ немного по-другому
Этот формат открытого ключа совместим с OpenSSH. Добавьте открытый ключ к,
remote:~/.ssh/authorized_keys
и вам будет хорошодокументы из
SSH-KEYGEN(1)
источник
openssl rsa -in key.pem -pubout -out pubkey.pem
не был принят, поскольку очевидно, что результатом является открытый ключ формата pem. Итак, я получил эту ошибку: «Ключ недействителен. Он должен начинаться с« ssh-rsa »или« ssh-dss ». Проверьте, что вы копируете открытую половину ключа». Однакоssh-keygen -y [-f input_keyfile]
генерирует правильный формат, который принимает Github.В большинстве программ, которые генерируют закрытые ключи RSA, включая openssl, закрытый ключ представляется как объект RSAPrivatekey PKCS # 1 или какой-либо его вариант:
Как видите, этот формат имеет ряд полей, включая модуль и открытый показатель, и, следовательно, является строгим расширенным набором информации в открытом ключе RSA .
источник
Мой ответ ниже немного длинен, но, надеюсь, он содержит некоторые детали, которые отсутствуют в предыдущих ответах. Я начну с некоторых связанных утверждений и, наконец, отвечу на первоначальный вопрос.
Чтобы зашифровать что-либо с помощью алгоритма RSA, вам понадобится пара модулей экспоненты и модуля шифрования (общедоступная) (n, e). Это твой открытый ключ. Чтобы расшифровать что-либо с помощью алгоритма RSA, вам нужна пара модулей экспонент (n, d) для модуля и дешифрования (приватная). Это твой закрытый ключ.
Чтобы зашифровать что-либо с помощью открытого ключа RSA, вы рассматриваете свой открытый текст как число и повышаете его до степени e modulus n:
Чтобы расшифровать что-либо с помощью закрытого ключа RSA, вы рассматриваете свой зашифрованный текст как число и повышаете его до степени d модуля n:
Чтобы сгенерировать закрытый (d, n) ключ с помощью openssl, вы можете использовать следующую команду:
Чтобы сгенерировать открытый (e, n) ключ из закрытого ключа с помощью openssl, вы можете использовать следующую команду:
Чтобы проанализировать содержимое частного RSA-ключа private.pem, сгенерированного вышеуказанной командой openssl, выполните следующее (выходные данные урезаны до меток здесь):
Разве закрытый ключ не должен состоять только из (n, d) пары? Почему есть 6 дополнительных компонентов? Он содержит e (открытый показатель), так что открытый ключ RSA можно сгенерировать / извлечь / извлечь из частного ключа RSA private.pem. Остальные 5 компонентов предназначены для ускорения процесса расшифровки. Оказывается, что путем предварительного вычисления и сохранения этих 5 значений можно ускорить дешифрование RSA в 4 раза. Дешифрование будет работать без этих 5 компонентов, но это можно сделать быстрее, если они вам пригодятся. Алгоритм ускорения основан на китайской теореме об остатках .
Да, закрытый ключ private.pem RSA на самом деле содержит все эти 8 значений; ни один из них не генерируется на лету при запуске предыдущей команды. Попробуйте выполнить следующие команды и сравните вывод:
Эта структура закрытого ключа RSA рекомендуется PKCS # 1 v1.5 в качестве альтернативного ( второго ) представления. Стандарт PKCS # 1 v2.0 исключает показатели e и d из альтернативного представления. PKCS # 1 v2.1 и v2.2 предлагают дальнейшие изменения в альтернативном представлении путем необязательного включения большего количества компонентов, связанных с CRT.
Чтобы увидеть содержимое публичного RSA-ключа public.pem, выполните следующее (выходные данные обрезаны до меток здесь):
Здесь нет сюрпризов. Это просто (n, e) пара, как и обещано.
Теперь, наконец, отвечаем на первоначальный вопрос: как было показано выше, закрытый ключ RSA, сгенерированный с использованием openssl, содержит компоненты открытого и закрытого ключей и некоторые другие. Когда вы генерируете / извлекаете / извлекаете открытый ключ из закрытого ключа, openssl копирует два из этих компонентов (e, n) в отдельный файл, который становится вашим открытым ключом.
источник
e
всегда равен 655370x010001
. Вероятно, это является дефактом для выбора публичного показателя, и, вероятно, именно поэтому на странице руководства, и почти в каждом местеgenrsa
, объясняется какto generate the private key
. Публичный вид довольно очевиден.Открытый ключ не хранится в файле PEM, как думают некоторые. В файле закрытого ключа присутствует следующая структура DER:
Таким образом, имеется достаточно данных для расчета открытого ключа (модуль и открытый показатель), что
openssl rsa -in mykey.pem -pubout
делаетисточник
здесь, в этом коде, сначала мы создаем ключ RSA, который является закрытым, но у него также есть пара открытых ключей, поэтому для получения вашего действительного открытого ключа мы просто делаем это
надеюсь, вы получите его для получения дополнительной информации, проверьте это
источник
Во-первых, быстрый обзор генерации ключей RSA.
Открытый ключ состоит из модуля и открытого показателя.
Минимальный закрытый ключ состоит из модуля и частного показателя. Не существует надежного в вычислительном отношении способа безошибочного перехода от известного модуля и частного показателя к соответствующему общему показателю.
Однако:
Таким образом, в большинстве практических реализаций RSA вы можете получить открытый ключ из закрытого ключа. Было бы возможно построить криптосистему на основе RSA, где это было бы невозможно, но это не сделано.
источник
источник