如何在Python中使用加密的RSA私钥(AES-256-CBC)对数据签名

时间:2019-05-26 11:57:33

标签: python aes rsa pycrypto

private_key的部分示例(此变量是一个字符串):

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-256-CBC,hidden_text..

lots_of_hidden_text..

-----END RSA PRIVATE KEY-----

当我尝试执行以下操作时:

from Crypto.PublicKey import RSA
from Crypto.Signature import PKCS1_v1_5
rsakey = RSA.importKey(private_key, passphrase=privkey_secret_string)
signer = PKCS1_v1_5.new(rsakey)
signature = signer.sign(data)

我在importKey上出现值错误:

Error: ValueError: Unsupport PEM encryption algorithm.

我可以看到RSA.importKey不支持AES-256-CBC,但是我找不到任何导入此私钥的方法。

为了创建AES签名者,我看到的唯一解决方案是:

signer = AES.new(privkey_secret_string, AES.MODE_CBC, IV=iv)

但这不使用私钥

1 个答案:

答案 0 :(得分:0)

您可以在导入密钥之前切换到PyCryptodome或通过对openssl的系统调用来解密密钥:

echo PASSPHRASE | openssl rsa -in key.pem