openssl dhparam 输出文件末尾有奇怪的字符

openssl dhparam 输出文件末尾有奇怪的字符

当我使用 openssl 生成 diffie-hellman 素数时,输出文件末尾有一些奇怪的字符,我想了解它的含义。

背景信息:

我的目标是生成一个可供 Diffie-Hellman 使用的安全素数,其长度至少为 500 位,并与生成器 5 兼容。

这些是我使用的终端命令:

mymacbookname myname$ openssl dhparam -out dh512.der 512 -5 -outform DER -text
Generating DH parameters, 512 bit long safe prime, generator 5
This is going to take a long time
.......................+.+..+..........+............+........+................+....................+................................+.+...............................................................+......+.......+.............................+........+............................+............+..................+................+..........+..............+........................................+.....+............................................+.............+......+...........+....+..........................................+.........................................................+..........................+.................................+................+...+............+...+....................+................+....+...+.+.....................+......................+..............+..................++*++*++*++*++*++*
mymacbookname myname$ 

我将文件“dh512.der”重命名为“dh512.der.txt”,文本文件中的内容如下:(这是一个课堂项目,不会用于任何重要的密钥交换。)

Diffie-Hellman-Parameters: (512 bit)
    prime:
        00:9f:71:b9:ea:51:1e:95:d2:9a:66:65:bd:d2:a1:
        31:bd:6d:58:0d:59:06:c4:43:e2:53:34:03:f9:5b:
        c7:4e:48:1e:b0:1f:2c:7f:16:ff:1d:47:26:7d:4d:
        14:63:42:cf:ba:42:ee:06:83:6d:e6:f9:f0:6a:5a:
        fb:ca:66:da:87
    generator: 5 (0x5)
0FAüqπÍQï“öfeΩ“°1ΩmX YƒC‚S4˘[«NH∞,ˇG&}McBœ∫BÓÉmÊ˘jZ˚ f⁄á

我很确定

            00:9f:71:b9:ea:51:1e:95:d2:9a:66:65:bd:d2:a1:
            31:bd:6d:58:0d:59:06:c4:43:e2:53:34:03:f9:5b:
            c7:4e:48:1e:b0:1f:2c:7f:16:ff:1d:47:26:7d:4d:
            14:63:42:cf:ba:42:ee:06:83:6d:e6:f9:f0:6a:5a:
            fb:ca:66:da:87

是我在十六进制格式中寻找的素数,以:“”分隔。但我只是对这部分感到好奇:

0FAüqπÍQï“öfeΩ“°1ΩmX YƒC‚S4˘[«NH∞,ˇG&}McBœ∫BÓÉmÊ˘jZ˚ f⁄á

那是为了什么?那意味着什么?我看了手册页https://www.openssl.org/docs/apps/dhparam.html并且它没有关于输出文件将包含什么内容的描述。

谢谢!


更新:

我尝试以文本形式查看 PEM 文件,因此我将选项从 DER 更改为 PEM。

终端命令:

openssl dhparam -out dh512pem.txt 512 -5 -outform PEM -text

终端输出:

Generating DH parameters, 512 bit long safe prime, generator 5
This is going to take a long time
......................................+...............................+........................................+...................+.........................+....+..........................................................................................................+.......................+............+........+...+..+................+.........................+......+.....................+........................+.........................................+..............................................+..........+..............................................+.........................+......+..............+...........+..+...............................................+....................................+..........+....................+.........+...................+........+.....................+..............................................+..+............+................+...............................+.+.............+.....................................+.............+............................+.......+.......................................................+...................+.........+.........+.................+..............+..........+.+..+.................................+.......+........+...............+....................+..................+.............+............+.........+...............++*++*++*++*++*++*

dh512pem.txt 的内容:

Diffie-Hellman-Parameters: (512 bit)
    prime:
        00:d6:23:97:87:75:2d:88:73:24:26:dc:be:c9:70:
        21:81:02:7d:ca:be:10:89:ba:57:f0:e1:2f:ca:b0:
        da:fd:5d:67:c9:51:f9:8c:e8:f2:20:dd:23:72:e5:
        a0:79:1c:ad:98:93:3e:c2:14:18:f9:02:5a:1a:0e:
        5a:d8:de:68:27
    generator: 5 (0x5)
-----BEGIN DH PARAMETERS-----
MEYCQQDWI5eHdS2IcyQm3L7JcCGBAn3KvhCJulfw4S/KsNr9XWfJUfmM6PIg3SNy
5aB5HK2Ykz7CFBj5AloaDlrY3mgnAgEF
-----END DH PARAMETERS-----

我认为它在打印文本(十六进制)版本后输出 DER 格式。因为当我切换到 PEM 格式时,它在打印文本版本后输出 base64。

支持这个想法的来源:手册页 https://www.openssl.org/docs/apps/dhparam.html

-inform DER|PEM 指定输入格式。DER 选项使用与 PKCS#3 DHparameter 结构兼容的 ASN1 DER 编码形式。PEM 形式是默认格式:它由 DER 格式 base64 编码以及附加的页眉和页脚行组成。

-outform DER|PEM 此项指定输出格式,选项含义与 -inform 选项相同。

答案1

我更新问题时的想法是正确的。感谢 dave_thompson_085 确认这是 DER 输出。如果我没有输入“-text”选项,DER 输出就是相同的输出。text 选项使它以“人类可读”格式打印添加至 DER 输出。

相关内容