簡體   English   中英

將RSA密鑰導入Python

[英]Import RSA key into Python

我正在嘗試使用RSA.importkey將RSA(公共)密鑰導入Python,但我不支持RSA密鑰

這是我編寫的代碼:

f = open('pub.key','rb')
data = f.read()
imported = RSA.importkey(data)
f.close()

這是我嘗試導入的密鑰的屏幕截圖: RSA_Public_Key

有人可以幫我嗎?

在此處輸入圖片說明

[更新]:我已經做過更多研究,並且密鑰是MS PUBLICKEYBLOB格式,我猜它與PyCrypto不兼容? 還有其他我可以用來導入的東西嗎

我不認為Python的Crypto.PublicKey模塊支持PUBLICKEYBLOB鍵,但它並不 ,以提取有用的東西。

由於您以圖片的形式提供了數據( 請不要 ),因此,我將向您展示該過程如何使用此鍵進行工作

0000000: 0602 0000 00a4 0000 5253 4131 0008 0000  ........RSA1....
0000010: 0100 0100 7597 4c3b 8446 de2c 2af4 95a8  ....u.L;.F.,*...
0000020: 5dc0 cd6d dad7 d492 1e13 8234 6a70 8d8f  ]..m.......4jp..
0000030: 7cf7 0492 557f f1a2 27b2 9e41 ac90 8091  |...U...'..A....
0000040: 1893 c2b1 7bad 2bf3 ffaf db2b 51be 1da3  ....{.+....+Q...
0000050: 27e3 a757 085a bec1 1df6 04f8 1cbe 5bb1  '..W.Z........[.
0000060: 67fb e4c8 da75 0070 b117 7024 6c09 6374  g....u.p..p$l.ct
0000070: ac4b 0a1d 71ae 7fae 65b8 c586 79c5 7e9f  .K..q...e...y.~.
0000080: 9860 4c52 b929 62cb 2329 ed31 9174 7b7b  .`LR.)b.#).1.t{{
0000090: 0b26 1bf2 7d67 bfda 7a40 daf2 614d 94a5  .&..}g..z@..aM..
00000a0: 7dad 596b ad9e a33a 39c6 5b6e 9fd2 bb36  }.Yk...:9.[n...6
00000b0: b5f5 d265 f52c 30d8 c117 bdaf 2800 9620  ...e.,0.....(.. 
00000c0: 46a7 2d62 030c d7d0 75a0 0b07 ead4 1fca  F.-b....u.......
00000d0: e8d9 4edb 38f2 2675 cb12 a688 709b e1ea  ..N.8.&u....p...
00000e0: 32dc f871 7250 41e6 1781 6827 428e dfe5  2..qrPA...h'B...
00000f0: dea1 72d9 3bfb e59d 3011 6992 cd60 2be2  ..r.;...0.i..`+.
0000100: d546 3c28 cf9d 304a f7ad b9fb 0f91 fe2e  .F<(..0J........
0000110: be18 f1ce                                ....

您實際需要的僅有的兩條信息是公共指數e和模數n 您可以在RSA1令牌后的八個字節找到e作為32位的小尾數。 在這種情況下, 010001000x10001或65537。鍵的其余部分是模數,該模數也按小端順序排列。

這是一些Python代碼,它將這些信息轉換為常規鍵:

from Crypto.PublicKey import RSA
e = 65537L
n = int('75974c3b8446de2c2af495a85dc0cd6ddad7d4921e1382346a708d8f7cf70492557ff1a2'\
        '27b29e41ac9080911893c2b17bad2bf3ffafdb2b51be1da327e3a757085abec11df604f8'\
        '1cbe5bb167fbe4c8da750070b11770246c096374ac4b0a1d71ae7fae65b8c58679c57e9f'\
        '98604c52b92962cb2329ed3191747b7b0b261bf27d67bfda7a40daf2614d94a57dad596b'\
        'ad9ea33a39c65b6e9fd2bb36b5f5d265f52c30d8c117bdaf2800962046a72d62030cd7d0'\
        '75a00b07ead41fcae8d94edb38f22675cb12a688709be1ea32dcf871725041e617816827'\
        '428edfe5dea172d93bfbe59d30116992cd602be2d5463c28cf9d304af7adb9fb0f91fe2e'\
        'be18f1ce'.decode('hex')[::-1].encode('hex'), 16)
key_params = (n, e)
pub_key = RSA.construct(key_params)
print pub_key.exportKey()

這是輸出:

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzvEYvi7+kQ/7ua33SjCd
zyg8RtXiK2DNkmkRMJ3l+zvZcqHe5d+OQidogRfmQVBycfjcMurhm3CIphLLdSby
ONtO2ejKH9TqBwugddDXDANiLadGIJYAKK+9F8HYMCz1ZdL1tTa70p9uW8Y5OqOe
rWtZrX2llE1h8tpAetq/Z33yGyYLe3t0kTHtKSPLYim5UkxgmJ9+xXmGxbhlrn+u
cR0KS6x0YwlsJHAXsXAAddrI5PtnsVu+HPgE9h3BvloIV6fjJ6MdvlEr26//8yut
e7HCkxiRgJCsQZ6yJ6Lxf1WSBPd8j41wajSCEx6S1Nfabc3AXaiV9Cos3kaEO0yX
dQIDAQAB
-----END PUBLIC KEY-----

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM