标签: 摘要算法

  • 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