Вы не можете сгенерировать ни один ключ непосредственно из другого.Это математически невозможно.Если у вас есть ключевой объект, содержащий и открытый и закрытый ключи, вы можете извлечь один из них относительно легко.
РЕДАКТИРОВАТЬ, 2017: Многие годыи гораздо лучшее понимание криптовалюты позже, и теперь мне ясно, что этот ответ не совсем корректен.
Цитируя Википедию:
Открытый ключ состоит из модуляn и публичный (или шифровальный) показатель e.Закрытый ключ состоит из модуля n и частного (или расшифровывающего) показателя d, который должен храниться в секрете.p, q и λ (n) также должны храниться в секрете, поскольку они могут использоваться для вычисления d.
Открытый модуль n может быть вычислен как p × q.Единственное, чего не хватает в необработанном закрытом ключе, это e, но это значение обычно выбирается как 65537, и если нет, вы все равно можете вычислить e из d и λ (n).
Однако многие форматы хранения закрытых ключейна самом деле содержат открытый модуль n вместе с другими компонентами, так что вы можете просто сделать прямое извлечение значений.
EDIT, 2018: Все еще получаю отрицательные отзывы за это, и это правильно!Я оставляю этот ответ, чтобы люди могли понять, почему я изначально ошибался, и напомнить себе, что в будущем я не ошибаюсь.