2013-09-30 71 views
1

我使用的RSA Python包加密消息並嘗試將其傳遞給PHP網站解密。請看下圖:Python的RSA加密的消息傳給其他語言decypt

message = rsa.encrypt('abc', pubkey) 
print message 
print type(message) 

我得到的是一些加密的文本

q??$$??kK?Y??p?[e?[??f???x??s!?s?>?z?*y?p?????????分? 
? ???({u????NH?B???N?%[email protected]|?~?????\U?.??r?Y?q 
<type 'str'> 

什麼是它傳遞給其他語言解密的最好方式?

回答

2

這不是一個文本,它是一個二進制數據。正如你使用python2它不能完全區分bytesstr,所以你應該關心這一點。

對方應該得到這個字節正是因爲RSA輸出他們,所以你可以把它們寫入到您的網絡連接或文件(假設你正在談論二進制他們)。

+0

啊感謝您的支持,我打算編碼到base64,但認爲這是文本字符串,所以我停了下來。 –

2

對於web,您可以base64編碼數據。這是編碼二進制數據的常用方法。

>>> import base64 
>>> base64.b64encode(b"data") 
'ZGF0YQ==' 
>>> base64.b64decode(base64.b64encode(b"data")) 
'data' 

順便說一句,你不假設使用RSA那種方式。使用原始RSA非常不安全。您必須使用適當填充的概率加密方案,例如RSAES-OAEP。 PKCS#1定義了這種加密和簽名方案。

+0

看起來像隨機填充http://stuvel.eu/files/python-rsa-doc/intro.html,我可以確認每次加密的消息都會改變。 –