簡體   English   中英

如何將字符串轉換為“BEGIN RSA PUBLIC KEY”的格式

[英]How can I Covert a string into format of “BEGIN RSA PUBLIC KEY”

我正在模擬登錄網站,服務器反饋RSA加密的“pubkey”。 我應該使用“pubkey”加密我的密碼。 內容是:

-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDWgW3gsfqzrID7Bz+pfcHD1TMP
CFAE0/1fnJnPDumXD6p75LTCpkA1jxVFpunLqIgKtSr8M84z5dyX4QQ9Rtb4tcd6
3ptgQZkoIGqrVdwskL8pSkTjI6zkG4ebB5UmlNiRQw7TcwmufOfYfAS94PGZaDxH
wFGtMyOvP2UXBxduMwIDAQAB
-----END PUBLIC KEY-----

現在,問題是我無法使用python2.7.8的rsa包將其轉換為“RSAPublicKey”格式。

錯誤代碼:

key = rsa.key.PublicKey.load_pkcs1(self.publickey["pubkey"].encode("utf-8"), "PEM")

錯誤提示:

ValueError: No PEM start marker "-----BEGIN RSA PUBLIC KEY-----" found

我會使用正確的“rsapublickey”:

password_rsaed = base64.b64encode(rsa.encrypt(self.password.encode("utf-8"), key))

我有一個解決問題的方法。 它的 :

rsa.PublicKey.load_pkcs1_openssl_pem(cls, keyfile)

它從OpenSSL加載PKCS#1.5 PEM編碼的公鑰文件,並且可以識別以“----- BEGIN PUBLIC KEY -----”開頭的內容,並返回一個publickey對象。

print(type(self.publickey["pubkey"].encode("utf-8")))
key = rsa.PublicKey.load_pkcs1_openssl_pem(self.publickey["pubkey"].encode("utf-8"))
print(type(key))

結果:

<class 'bytes'>
<class 'rsa.key.PublicKey'>

提示:該方法來自python3。

暫無
暫無

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

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