gpt4 book ai didi

python - 使用 Python 从私钥输入中提取公钥

转载 作者:行者123 更新时间:2023-12-04 01:52:12 25 4
gpt4 key购买 nike

我需要从没有本地临时位置的私钥生成公钥,就像我们在 sshgen 中所做的那样。所以我使用这个。在这里,我将我的私钥作为输入传递给这样的(在执行时):

python codekey.py "-----BEGIN RSA PRIVATE KEY-----\nMIhhhhhhhhhhhhhhhh......Bidqt/YS3/0giWrtv+rMkJtv8n\nmirJ+16SZodI5gMuknvZG....................n-----END RSA PRIVATE KEY-----"

我的代码(codekey.py):
import sys
import io
from twisted.conch.ssh import keys
k = sys.argv[1]
rsa = keys.RSA.importKey(k)
key = keys.Key(rsa)
ssh_public = key.public().toString("openssh")
print ssh_public

错误:
      Traceback (most recent call last):
File "codekey.py", line 7, in <module>
rsa = keys.RSA.importKey(k)
File "/usr/lib/python2.7/dist-packages/Crypto/PublicKey/RSA.py", line 638, in importKey
if lines[1].startswith(b('Proc-Type:4,ENCRYPTED')):
IndexError: list index out of range

Dyanamically我需要在执行我的python脚本时传递如上所示的键值,并从中生成公钥。是否可能??,我不需要在本地存储,因为为了特权和关键证券,不想破解。

最佳答案

您可以这样做:

如果您已经拥有私钥,您基本上可以用它创建一个私钥对象,然后简单地使用 as 从中提取公钥:

public_key = private_key.publickey().exportKey('PEM')

假设 private_key 是您的私钥对象。

如果您没有此对象,则从 PEM 编码 (PKCS#1) 私钥文件(如您在上面的问题中给出)获取它的一种方法如下:
from Crypto.PublicKey import RSA
from base64 import b64decode
pem_key = b'your private key in PEM'
key = b64decode(pem_key)
keyPriv = RSA.importKey(key)
# key now has all the components of the private
print keyPriv.keydata
modulusN = keyPriv.n
pubExpE = keyPriv.e
priExpD = keyPriv.d
primeP = keyPriv.p
primeQ = keyPriv.q
private_key = RSA.construct((modulusN, pubExpE, priExpD, primeP, primeQ))

然后一旦您在 private_key 对象中拥有私钥,请执行以下操作:
public_key = private_key.publickey().exportKey('PEM')

关于python - 使用 Python 从私钥输入中提取公钥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39074253/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com