encryption - 如何使用 openssl genrsa 输出检查密钥生成中使用的算法
问题描述
我已经使用创建了一个密钥对
openssl genrsa -out test1.key
我想通过查看来验证密钥是如何加密的
openssl genrsa --help
,-des 在 cbc 模式下使用 DES 加密生成的密钥
-des3 在ede cbc 模式下用DES 加密生成的密钥(168 位密钥) --idea 在cbc 模式下用IDEA 加密生成的密钥
我用过
openssl rsa -in test1.key -text
,但它没有显示任何关于这些的信息。
请问有什么办法检查吗?
解决方案
您期待一个加密的密钥,但默认情况下它不是。genrsa 手册页明确指出(强调我的):
-aes128|-aes192|-aes256|-aria128|-aria192|-aria256|-camellia128|-camellia192|-camellia256|-des|-des3|-idea
这些选项在输出之前使用指定的密码对私钥进行加密。如果没有指定这些选项,则不使用加密。如果使用加密,则如果未通过 -passout 参数提供密码短语,则会提示输入密码短语。
这也可以从生成的 PEM 文件中看出,该文件除了密钥本身之外没有任何信息:
$ openssl genrsa -out test-plain.key
Generating RSA private key, 2048 bit long modulus (2 primes)
...........................................................................................+++++
..........................+++++
e is 65537 (0x010001)
$ head -n 2 test-plain.key
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEA5RCtTAg3fuspy1VdZpHqrFz4Lt9p5MnZkjH0FZ9wAk9vpvRF
另一方面,如果我们指定一个加密算法应用于密钥,会发生两件事:
- 系统提示我输入密码(除非通过 指定
-passout
) - 算法和分组密码模式显示在 PEM 输出中
$ openssl genrsa -out test-aes.key -aes128
Generating RSA private key, 2048 bit long modulus (2 primes)
............................................................+++++
................................+++++
e is 65537 (0x010001)
Enter pass phrase for test-aes.key: foobar
Verifying - Enter pass phrase for test-aes.key: foobar
$ head -n 3 test-aes.key
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,ED364325F65A0F212D07BC9E643D6424
我们可以清楚地看到它AES-128-CBC
与指示的 IV 一起使用。
推荐阅读
- python - 使用列表中的三元组索引 numpy 数组
- jquery - jQuery 数据表在传递 JSON url 时导致“无法读取未定义的属性‘mData’”错误
- ruby-on-rails - 如何设置 app.yaml 以重定向所有带有 . 将它们放入rails应用程序的公共文件夹中的文件?
- javascript - Javascript Atom:数组问题
- c# - salesforce url 无法使用 c# .net 代码建立 SSL 连接
- python - 以有效的方式计算图像像素差异
- angular - 创建新应用程序时出现角度编译错误rxjs
- c - C - 创建一个将数据返回到联合的查找表:按位结构或短结构
- python - Pandas 数据框和转换为 Json
- javascript - 对象解构忽略值