openssl-dgst

openssl-dgst

名字

openssl-dgst – perform digest operations

概要

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。支持的摘要算法名称也可用作子命令名称。要查看支持的算法列表,请使用 openssl list -digest-algorithms

选项

  • -help

    Print out a usage message.

  • -digest

    指定要使用的摘要算法名,可用的算法看下面的-list选项

  • -list

    打印支持的摘要算法列表

  • -c

    Print out the digest in two digit groups separated by colons, only relevant if the -hex option is given as well.
    以冒号分隔的双数字组打印摘要,仅跟-hex选项一起使用才有效。

  • -d, -debug

    Print out BIO debugging information.

  • -hex

    以hex dump格式输出摘要,这是普通digest(非签名)的默认格式,详细情况参考NOTES部分

  • -binary

    以二进制格式输出摘要或签名

  • -xoflen length

    设置 XOF 算法(如 shake128 和 shake256)的输出长度。签名操作不支持此选项。

    对于 OpenSSL providers,需要为 shake 算法设置此值,因为以前的默认值仅设置为最大安全强度的一半。

    为了确保 128 位的最大安全强度,shake128 的 xoflen 应至少设置为 32(字节)。为了与以前版本的 OpenSSL 兼容,可以将其设置为 16,导致安全强度仅为 64 位。
    为了确保 256 位的最大安全强度,shake256 的 xoflen 应至少设置为 64(字节)。为了与以前版本的 OpenSSL 兼容,可以将其设置为 32,导致安全强度仅为 128 位。

  • -r

    以coreutils格式输出摘要,打包换行。用于像sha1sum这样的程序。

  • -out filename

    输出的文件名,默认为standard output.

  • -sign filename|uri

    使用给定的私钥对摘要进行数字签名。请注意,此选项不支持 Ed25519 或 Ed448 私钥, 如需要请使用 openssl-pkeyutl(1) 命令代替。

  • -keyform DER|PEM|P12|ENGINE

    用于签名的key的格式,没有默认值。 See openssl-format-options(1) for details.

  • -sigopt nm:v

    在签名或验签操作期间传递给签名算法的选项。这些names和values是算法特定的,关于Signature parameters的文档记录请参考provider-signature(7)

  • -passin arg

    输入私钥的密码源,参考openssl-passphrase-options(1).

  • -verify filename

    指定一个公钥文件并使用这个公钥进行验签,输出是”Verified OK” or “Verification Failure”。

  • -prverify filename

    指定一个私钥并使用这个私钥进行验签

  • -signature filename

    指定要验证的签名文件

  • -hmac key

    使用指定的key创建一个hashed MAC码

    与使用此命令行选项相比,应优先使用 openssl-mac(1) 命令。

  • -mac alg

    创建 MAC(keyed Message Authentication Code)。最流行的 MAC 算法是 HMAC(hash-based 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 key(two hex digits per byte)。密钥长度必须符合 MAC 算法的任何限制,例如 gost-mac 的长度必须恰好为 32 个字符。
    

    与使用此命令行选项相比,应优先使用 openssl-mac(1) 命令。

  • -fips-fingerprint

    使用特定密钥为某些 OpenSSL-FIPS 操作计算 HMAC。

  • -rand files, -writerand file

    See “Random State Options” in openssl(1) for details.

  • -engine id

    See “Engine Options” in openssl(1). This option is deprecated.

    The engine is not used for digests unless the -engine_impl option is used or it is configured to do so, see “Engine Configuration Module” in config(5).

  • -engine_impl id

    When used with the -engine option, it specifies to also use engine id for digest operations.

    -provider name
    -provider-path path

  • -propquery propq

    See “Provider Options” in openssl(1), provider(7), and property(7).

  • file …

    需要签名的file或files.如果没有文件指定则使用标准输入。openssl dgst命令不使用-in选项指定输入文件,而是输入文件名放在命令行的结尾。

注意

可用的摘要机制将取决于构建 OpenSSL 时使用的选项。可以使用 openssl list -digest-algorithms 命令列出它们。
新的或agile的应用程序应该使用 SHA-256。其他摘要,特别是 SHA-1 和 MD5,仍然广泛用于与现有格式和协议进行互操作。
签名文件时,此命令将根据私钥的 ASN.1 信息自动确定用于签名的算法(RSA、ECC 等)。验证签名时,它仅处理 RSA、DSA 或 ECDSA 签名本身,而不处理 x.509、CMS 和 S/MIME 等格式中用于标识signer and algorithm的相关数据(意思是签名算法由私钥决定,而不管证书的算法信息?)。

某些签名算法需要随机数源,特别是 ECDSA 和 DSA。

仅当要签名或验证单个文件时,才应使用signing and verify选项。

无法使用 openssl 验证十六进制签名。相反,在验证之前,请使用“xxd -r”或类似程序将十六进制签名转换为二进制签名。

与 -hmac、-mac 和 -macopt 命令行选项相比,应优先使用openssl-mac(1) 命令。

Views: 0

评论

发表回复