openssl-dgst
名称
openssl-dgst - 执行摘要操作
语法
openssl dgst|digest [-digest] [-list] [-help] [-c] [-d] [-debug] [-hex] [-binary] [-xoflen length] [-r] [-out filename] [-sign filename|uri] [-keyform DER|PEM|P12|ENGINE] [-passin arg] [-verify filename] [-prverify filename] [-signature filename] [-sigopt nm:v] [-hmac key] [-mac alg] [-macopt nm:v] [-fips-fingerprint] [-engine id] [-engine_impl id] [-rand files] [-writerand file] [-provider name] [-provider-path path] [-propquery propq] [file ...]
描述
此命令以十六进制形式输出提供文件或文件的摘要,并使用消息摘要生成和验证数字签名。
通用名称 openssl dgst 可与指定要使用算法的选项一起使用。默认摘要为 sha256。支持的 digest 名称也可以用作子命令名称。要查看支持算法的列表,请使用 openssl list -digest-algorithms
选项
- -help
-
打印使用消息。
- -digest
-
指定要使用的支持摘要的名称。请参见下面的 -list 选项
- -list
-
打印支持的消息摘要列表。
- -c
-
以冒号分隔的两位数组打印摘要,仅在也给出 -hex 选项时才相关。
- -d, -debug
-
打印 BIO 调试信息。
- -hex
-
摘要将作为十六进制转储输出。这是“正常”摘要(而不是数字签名)的默认情况。有关使用 -hex 的数字签名,请参见下面的说明。
- -binary
-
以二进制形式输出摘要或签名。
- -xoflen length
-
设置 XOF 算法的输出长度,例如 shake128 和 shake256。此选项不支持签名操作。
对于 OpenSSL 提供程序,建议为 shake 算法设置此值,因为默认值设置为仅提供最大安全强度的一半。
出于向后兼容性原因,shake128 的默认 xoflen 长度为 16(字节),这导致安全强度仅为 64 位。为了确保 128 位的最大安全强度,xoflen 应至少设置为 32。
出于向后兼容性原因,shake256 的默认 xoflen 长度为 32(字节),这导致安全强度仅为 128 位。为了确保 256 位的最大安全强度,xoflen 应至少设置为 64。
- -r
-
以“coreutils”格式输出摘要,包括换行符。由 sha1sum(1) 等程序使用。
- -out filename
-
要输出到的文件名,或默认情况下为标准输出。
- -sign filename|uri
-
使用给定的私钥对摘要进行数字签名。请注意,此选项不支持 Ed25519 或 Ed448 私钥。相反,请使用 openssl-pkeyutl(1) 命令。
- -keyform DER|PEM|P12|ENGINE
-
要签名的密钥的格式;默认情况下未指定。有关详细信息,请参见 openssl-format-options(1)。
- -sigopt nm:v
-
在签名或验证操作期间将选项传递给签名算法。这些选项的名称和值是特定于算法的。
- -passin arg
-
私钥密码源。有关 arg 格式的更多信息,请参见 openssl-passphrase-options(1)。
- -verify filename
-
使用“filename”中的公钥验证签名。输出为“Verified OK”或“Verification Failure”。
- -prverify filename
-
使用“filename”中的私钥验证签名。
- -signature filename
-
要验证的实际签名。
- -hmac key
-
使用“key”创建哈希 MAC。
openssl-mac(1) 命令优先于使用此命令行选项。
- -mac alg
-
创建 MAC(带密钥的消息认证码)。最流行的 MAC 算法是 HMAC(基于哈希的 MAC),但也有其他不基于哈希的 MAC 算法,例如 gost-mac 算法,受 gost 引擎支持。MAC 密钥和其他选项应通过 -macopt 参数设置。
openssl-mac(1) 命令优先于使用此命令行选项。
- -macopt nm:v
-
将选项传递给由 -mac 密钥指定的 MAC 算法。以下选项受 HMAC 和 gost-mac 的支持
- key:string
-
将 MAC 密钥指定为字母数字字符串(如果密钥仅包含可打印字符,请使用)。字符串长度必须符合 MAC 算法的任何限制,例如 gost-mac 必须正好为 32 个字符。
- hexkey:string
-
以十六进制形式指定 MAC 密钥(每个字节两个十六进制数字)。密钥长度必须符合 MAC 算法的任何限制,例如 gost-mac 必须正好为 32 个字符。
openssl-mac(1) 命令优先于使用此命令行选项。
- -fips-fingerprint
-
使用特定密钥为某些 OpenSSL-FIPS 操作计算 HMAC。
- -rand files, -writerand file
-
有关详细信息,请参见 openssl(1) 中的“随机状态选项”。
- -engine id
-
请参见 openssl(1) 中的“引擎选项”。此选项已弃用。
除非使用 -engine_impl 选项或配置为这样做,否则引擎不会用于摘要,请参见 config(5) 中的“引擎配置模块”。
- -engine_impl id
-
与 -engine 选项一起使用时,它指定还使用引擎 id 进行摘要操作。
- -provider name
- -provider-path path
- -propquery propq
- file ...
-
要摘要的文件或文件。如果未指定任何文件,则使用标准输入。
示例
要创建文件的十六进制编码消息摘要
openssl dgst -md5 -hex file.txt
or
openssl md5 file.txt
要使用 SHA-256 和二进制文件输出对文件进行签名
openssl dgst -sha256 -sign privatekey.pem -out signature.sign file.txt
or
openssl sha256 -sign privatekey.pem -out signature.sign file.txt
要验证签名
openssl dgst -sha256 -verify publickey.pem \
-signature signature.sign \
file.txt
说明
可用的摘要机制将取决于构建 OpenSSL 时使用的选项。openssl list -digest-algorithms
命令可用于列出它们。
新的或敏捷的应用程序可能应该使用 SHA-256。其他摘要(尤其是 SHA-1 和 MD5)仍然被广泛用于与现有格式和协议进行互操作。
在对文件进行签名时,此命令将根据私钥的 ASN.1 信息自动确定用于签名的算法(RSA、ECC 等)。在验证签名时,它只处理 RSA、DSA 或 ECDSA 签名本身,而不处理与签名者和算法相关的用于 x.509、CMS 和 S/MIME 等格式的数据。
某些签名算法(尤其是 ECDSA 和 DSA)需要随机数源。
只有在对单个文件进行签名或验证时才应使用签名和验证选项。
无法使用 openssl 验证十六进制签名。相反,请使用“xxd -r”或类似程序将十六进制签名转换为二进制签名,然后再进行验证。
openssl-mac(1) 命令优先于 -hmac、-mac 和 -macopt 命令行选项。
另请参见
历史
在 OpenSSL 1.1.0 中,默认摘要从 MD5 更改为 SHA256。在 OpenSSL 1.1.0 中删除了与 FIPS 相关的选项。
-engine 和 -engine_impl 选项在 OpenSSL 3.0 中已弃用。
版权
Copyright 2000-2022 The OpenSSL Project Authors. All Rights Reserved.
根据 Apache 许可证 2.0(“许可证”)授权使用。除非符合许可证,否则您不得使用此文件。您可以在源代码分发中的 LICENSE 文件或 https://www.openssl.org/source/license.html 中获得副本。