2016-04-14 53 views
3

我是新來的加密與Python,我想知道哪些填充是其默認的RSA modulepython用於RSA模塊的填充類型是什麼?

我拿到鑰匙,並通過對數據進行解密:

import rsa 

(pub, priv) = rsa.newkeys(512) 
# receive the encrypted data here 
data = rsa.decrypt(encrypt_data, priv) 

而且據我所知,填充方法包括:RSA_PKCS1_PADDING,RSA_PKCS1_OAEP_PADDING,RSA_SSLV23_PADDING,RSA_NO_PADDING。

+0

它很可能是'RSA_PKCS1_PADDING'。你可以發佈一個用RSA模塊加密的十六進制或基本64位編碼字符串嗎?這很容易檢查(使用RSA_NO_PADDING)。 –

+0

@MaartenBodewes我得到的加密數據是「\ xab \ xe2B \ xe0Bt(〜T \ xcd \ x1d> iwd \ x16 <'\ xffd \ xa5_ | $ m9 \ xdd \ xed * ee \ xc1 \ x924c%\ xcdHg \ xc1h \ xb8 \ xc7 \ xf7 \ xb7 \ xd2 \ x8a \ xd1 \ x1c \ xab \ x7f \ xe8L \ x17 \ x05m \ x9dDC \ x10I \ xab「。我使用的代碼可以在https:// stuvel .eu/python-rsa-doc/usage.html(5.3節)。我怎麼才能根據這個輸出結果? – zzy

+0

@ArtjomB。是的,我相信這是我正在研究的模塊。 – zzy

回答

4

rsa module(當前版本3.4)僅支持用於加密(隨機化類型2填充)和簽名的PKCS#1 v1.5填充。

rsa/__init__.py中,您可以看到rsa.encrypt()實際上是rsa.pkcs1.encrypt(),它在內部使用rsa.pkcs1._pad_for_encryption(),它是前面提到的PKCS#1 v1.5填充的實現。

請注意,現在(ref),此填充不應再使用。對於來自PKCS#1 v2.0的加密和PSS簽名,建議使用OAEP。 PyCrypto支持OAEP/PSS和PKCS#1 v1.5填充。

+0

謝謝太多了!這正是我想要的。 – zzy