如何在 python 中使用加密的 RSA 私钥 (AES-256-CBC) 对数据进行签名
How to sign data with encrypted RSA private key (AES-256-CBC) in python
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)
但这并没有使用私钥
您可以切换到 PyCryptodome 或在导入密钥之前通过对 openssl 的系统调用来解密密钥:
echo PASSPHRASE | openssl rsa -in key.pem
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)
但这并没有使用私钥
您可以切换到 PyCryptodome 或在导入密钥之前通过对 openssl 的系统调用来解密密钥:
echo PASSPHRASE | openssl rsa -in key.pem