我相信我解决了这个问题。我还有几个问题,因为我对此很陌生。但对于任何想知道的人,这就是我所做的:
import os
import shutil
from Crypto.PublicKey import RSA
def encrypt(old_key, new_key, passphrase):
key = RSA.importKey(open(old_key, 'rb').read())
with open(new_key, 'wb') as f:
pem_key = key.export_key(format='PEM', passphrase=passphrase, pkcs=8, protection='PBKDF2WithHMAC-SHA1AndAES256-CBC')
f.write(pem_key)
f.close()
if os.path.exists(old_key):
os.remove(old_key)
encryptAES('path_to_old_key', 'path_to_new:key.key', 'supersecretpassword')
还有一个问题是,是否有办法输出类似于 OpenSSL 的 Python 中完成的加密信息?
如果你运行openssl rsa -aes256 -in old.key -out new.key
键将在开头返回属性,如下所示:
-----开始 RSA 私钥-----
Proc-Type:4,加密
DEK 信息:AES-256-CBC
关键在这里...
-----结束 RSA 私钥-----
但是,当我在 Python 中导出私钥时,我会得到:
-----开始加密私钥-----
钥匙在这里...
-----结束加密私钥-----
有没有办法用 pycryptodome 显示这些属性?