生成使用AES加密的RSA私钥

3 投票
1 回答
2968 浏览
提问于 2025-04-27 12:38

我刚接触加密技术,正在玩 openssl。opensssl 有一个命令可以生成用 AES 加密的 RSA 私钥:

openssl genrsa -aes128

示例结果会是:

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,7787EC23BAB71A7E339FA4BB5B197362

Sqmr8Zb8..bla..blaa
-----END RSA PRIVATE KEY-----

在 PyCrypto 中,我们可以用以下方式构建类似的私钥:

from Crypto.PublicKey import RSA
key = RSA.generate(1024).exportKey('PEM', 'secret')

这将产生:

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,760A8103AA096360

HxGmbla..blaa
-----END RSA PRIVATE KEY-----

注意,结果是用三重 DES 加密的。那么,如何才能用 PyCrypto 创建一个像上面那样用 AES 加密的私钥呢?

暂无标签

1 个回答

2

AES加密RSA密钥的功能只会在PyCrypto 2.7中支持(现在网站上有一个测试版可以下载)。不过,AES加密会在PKCS#8的层面上进行(也就是二进制格式),而不是在PEM层面(文本格式的封装)。

这虽然不是你问的内容,但其实更好,因为用于PEM的密钥扩展方法并不安全。

你可以这样做:

from Crypto.PublicKey import RSA
key = RSA.generate(2048)

print key.exportKey('PEM', 'secret', pkcs=8, protection='PBKDF2WithHMAC-SHA1AndAES256-CBC')

撰写回答