在Python中创建一系列RSA公共钥匙



因此,我想使用Python中的RSA生成器创建RSA公共键的列表,但是我遇到了一些问题,弄清楚了如何解决。到目前为止,我有

from Crypto.PublicKey import RSA
key_pair = RSA.generate(2048)
public_key = key.publickey()
print public_key

但是到目前为止,我看到了两个问题。一个是输出很奇怪,看上去并具有RSA对象的形式,我只想要一堆字母的键的长形式

第二是,如果我在循环中运行此代码,那么生成的所有键都是相同的。

有人知道我做错了什么吗?

解决第一个问题,您可以致电public_key.exportKey()

>>> from Crypto.PublicKey import RSA
>>> key_pair = RSA.generate(2048)
>>> public_key = key_pair.publickey()
>>> print(public_key.exportKey())
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAoGX9PTzmX+2AwMIhUunN
BUVPRpFFg63bLORKHEgHDW0RntE5u0yPB64Th4+zVas9yQBLhK+v2O6K4gyLOaT5
lQNF5KHQE3l/j6kInLIm73nMhdNJDpoV1cVUgTnuXoAEcTQXwYFf5ME/1/N4txIO
Toi1Z5T5eeVk2SXICdFL47l2vPpcVFmrNGZ16QrZDpVIo3aTmIllbwpm/YPsoLta
U3rcaMkEIar6y1iVEYVZCydN56YH4LDUpT7iGNFYAqgYGUkKHK/h7QATN21HAi/y
a51jrCOBCLCklcGU7/6x+2M5KhMbRRAN2/h1AH+CFdZ140Ml5a5mX+k2QPuplKwk
cwIDAQAB
-----END PUBLIC KEY-----

您可以通过拆分输出并取出内线来剥离开头和结束拖车:

>>> exported_key = public_key.exportKey().splitlines()[1:-1]
>>> print('n'.join(exported_key))
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAoGX9PTzmX+2AwMIhUunN
BUVPRpFFg63bLORKHEgHDW0RntE5u0yPB64Th4+zVas9yQBLhK+v2O6K4gyLOaT5
lQNF5KHQE3l/j6kInLIm73nMhdNJDpoV1cVUgTnuXoAEcTQXwYFf5ME/1/N4txIO
Toi1Z5T5eeVk2SXICdFL47l2vPpcVFmrNGZ16QrZDpVIo3aTmIllbwpm/YPsoLta
U3rcaMkEIar6y1iVEYVZCydN56YH4LDUpT7iGNFYAqgYGUkKHK/h7QATN21HAi/y
a51jrCOBCLCklcGU7/6x+2M5KhMbRRAN2/h1AH+CFdZ140Ml5a5mX+k2QPuplKwk
cwIDAQAB

我无法复制第二个问题。每次RSA.generate()称为:

时,都会生成一个新的密钥对。
pub_keys = set()
for i in range(5):
    k = RSA.generate(2048).publickey().exportKey()
    assert k not in pub_keys
    pub_keys.add(k)

您可以尝试以下代码生成以65537为PEM格式的RSA Keypair。

from Crypto.PublicKey import RSA
new_key = RSA.generate(2048, e=65537)
public_key = new_key.publickey().exportKey("PEM")
print public_key

它将为您生成一个如下的公共密钥:

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAp1rxDD3DyFAlZWUZhnT2
IrqXBx+XBgMRWYvOPoyjHwwBK/UlD6JW2cx2lP6TJ/Ljrpiamt35cfjRl8PROy81
hRRrVqa9AMUPcIkQoc9Y6VMxHURluX6AJOkakmszlwJvsHr5smMyG7oW/TpSBpR0
xNPc8lyGfhim8GuNomKaDkc5XhNHP7NWhpvOUbneqffkYExbRQrt1UrEMqRryxGh
Lk2rRB3Gny+iOFJP/AfDN0nxFFBrn32uD+2gDUBaBBta6Ii7+LbdpwUkXZlErFA9
5a7mE6g2Q4k87Pc0XwaxcLxwriejCtXD5cz0RgtkItkcUc/wU1vmnhol9Ncm6XSi
xwIDAQAB
-----END PUBLIC KEY-----

希望它有帮助!

最新更新