2016-04-28 15 views
1

ウェブサイトにログインするようにシミュレーションしていて、RSA暗号化用の "pubkey"をフィードバックしています。パスワードを "pubkey"で暗号化する必要があります。内容は次のとおりです。文字列を "BEGIN RSA PUBLIC KEY"の形式に変換する方法

-----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") 

ERRORヒント:I'vaを解決するためのメソッドを持って

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

答えて

0

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

私が正しい "のRSAPublicKey" を使用します問題。それはです:

rsa.PublicKey.load_pkcs1_openssl_pem(cls, keyfile) 

これは、OpenSSLからPKCS#1.5 PEMエンコードされた公開鍵ファイルをロードし、 "----- ----- PUBLIC KEYをBEGIN"、およびリターンで始まる内容を認識することができます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'> 

TIPS: 方法のpython3からのものです。

関連する問題