openssl-genrsa

openssl-genrsa

名称

openssl-genrsa – generate an RSA private key

概述

openssl genrsa [-help] [-out filename] [-passout arg] [-aes128] [-aes192] [-aes256] [-aria128] [-aria192] [-aria256] [-camellia128] [-camellia192] [-camellia256] [-des] [-des3] [-idea] [-F4] [-f4] [-3] [-primes num] [-verbose] [-quiet] [-traditional] [-rand files] [-writerand file] [-engine id] [-provider name] [-provider-path path] [-propquery propq] [numbits]

描述

这个命令可以生成RSA私钥

命令语法

  • -help

    帮助

  • -passout arg

    写入密钥文件时的密码

  • -out

    指定要写入密钥的输出文件名,如果未指定此选项,则使用标准输出。如果设置了任何加密选项,则会提示输入密码。输出文件名不应与输入文件名相同。

  • -aes128, -aes192, -aes256, -aria128, -aria192, -aria256, -camellia128, -camellia192, -camellia256, -des, -des3, -idea

    指定加密密钥的算法
    输出私钥之前,会使用指定的加密算法对其进行加密。系统会提示输入密码。如果未指定任何加密算法,则密钥将以纯文本形式写入。如果使用加密,则如果未通过 -passout 参数提供密码,则会提示输入密码。

  • -F4, -f4, -3

    要使用的公共指数,65537 或 3。默认值为 65537。-3 选项已被弃用。

  • -primes num

    指定生成 RSA 密钥时要使用的素数数量。num 参数必须是大于 1 且小于 16 的正整数。如果 num 大于 2,则生成的密钥称为“多素数”RSA 密钥,该用法在 RFC 8017 中定义。多素数会减少计算量,但也会降低复杂度,素数越多素数的长度越短。
    默认情况下是2个素数,经过我的测试可以指定以下值

    素数数量 最短私钥长度
    5 8192
    4 4096
    3 1024
    2 512
  • -verbose

    执行时输出更多的信息

  • -quiet

    输出更少的信息,这在批处理和使用管道时很方便,尤其是密钥生成期间抑制进度.的输出。

  • -traditional

    写入密钥时使用PKCS#1格式,默认是PKCS#8格式。PKCS#1仅能存储RSA密钥,PKCS#8是对PKCS#1的升级可以支持多种算法密钥存储。

  • -rand files, -writerand file

    指定随机数状态保存的文件,读取之前的随机数生成器状态并写入当前状态用于下次执行的时候继续使用。现在OpenSSL已经从操作系统中读取熵源,这个选项不再需要,只是在特殊情况下才有用。

  • -engine id

    指定engine id,这个选项已经废弃

  • -provider name

    指定provider name

  • -provider-path path

    provider的路径

  • -propquery propq

    provider中的属性

  • numbits

    要生成的私钥的大小(以bit为单位)。这必须是指定的最后一个选项。默认值为 2048,不允许小于 512 的值。注意这个是参数而不是选项。

NOTES

RSA 私钥生成本质上涉及两个或多个素数的生成。生成私钥时,将输出各种符号以指示生成的进度。 . 表示每个数字都已通过初始筛选测试,+ 表示数字已通过一轮 Miller-Rabin 素数测试,* 表示当前素数由于一些测试失败而开始重新生成。换行符表示数字已通过所有素数测试(实际数量取决于密钥大小)。

由于 Miller-Rabin 素数测试是概率性测试,测试素数时根据待测试数的位长度自动选择合适的轮数来增加准确性。以下是一些常见位长度下的默认轮数:

  • 对于512位以下的数,默认轮数为 8。
  • 对于512位到1024位的数,默认轮数为 5。
  • 对于1024位到2048位的数,默认轮数为 4。
  • 对于2048位到4096位的数,默认轮数为 3。
  • 对于4096位以上的数,默认轮数为 2。

由于密钥生成是一个随机过程,因此生成密钥所需的时间可能会有所不同。但一般来说,素数越多,密钥的生成时间越短。

Views: 0

评论

发表回复