GenerateDigitalSignature
GenerateDigitalSignature[expr,key]
用指定私钥 key 生成 expr 的数字签名.
表示可应用于表达式的 GenerateDigitalSignature 的运算符形式.
更多信息和选项
- 数字签名用于验证消息的真实性. 它取决于要签名的数据和私钥.
- GenerateDigitalSignature 返回一个 DigitalSignature 对象.
- DigitalSignature 对象可用 VerifyDigitalSignature 进行确认.
- key 是用 GenerateAsymmetricKeyPair[type] 生成的 PrivateKey 对象. 密钥的可能的类型为"EllipticCurve" 和 "EdwardsCurve" 和 "RSA".
- GenerateDigitalSignature 具有以下选项:
-
Method Automatic 签名方法的详细信息 - 采用设置 Methodassoc 时,关联 assoc 给出所用签名方法的详细信息.
- 签名的类型由密钥的类型决定. 如果无法确定密钥的类型,则必须由关联中的 "Type" 元素指定. 可能的类型包括 "RSA" 和 "EllipticCurve" 和 "Schnorr" 和 "EdwardsCurve".
- 对椭圆曲线数字签名算法 (ECDSA),"EllipticCurve" 签名类型使用 FIPS 186-4 规范.
- "EdwardsCurve" 签名算法使用 Edwards-Curve 数字签名算法 (EdDSA) 的 RFC 8032 规范.
- 对于 "RSA",关联中可包含以下元素:
-
"HashingMethod" "SHA256" 怎样哈希原始表达式 "HashName" Automatic 填充时使用的哈希的名称 "Padding" "PKCS1" 使用的填充方案 - 目前支持的填充方案有 "PKCS1" 和 "X931".
- "HashName" 的值通常与 "HashingMethod" 的值相同. 如果 "HashingMethod" 被设为 None,则必须提供 "HashName".
- 对于 "RSA","HashingMethod" 并不支持所有的哈希函数. 支持的哈希包括 "MD4"、"MD5"、"RIPEMD160"、"SHA1"、"SHA224"、"SHA256"、"SHA384"、"SHA512"、"SHA3-224"、"SHA3-256"、"SHA3-384" 和 "SHA3-512".
- 对于 "EllipticCurve" 和 "Schnorr",关联中可包含以下元素:
-
"CurveName" "secp256k1" 使用的椭圆曲线 "HashingMethod" "SHA256" 怎样哈希原始表达式 "SignatureType" Automatic 数字签名生成方式 - 对于 "EdwardsCurve",可在关联中包含以下元素:
-
"CurveName" "ed25519" 要使用的扭曲 Edwards 曲线 "HashingMethod" "SHA512" 怎样哈希原始表达式 "SignatureType" Automatic 数字签名生成模式 - $CryptographicEllipticCurveNames 列出了 "CurveName" 的可用设置.
- 使用曲线 "secp256k1" 的加密货币也可以用作 "CurveName" 的设置. 其中包括 "Bitcoin" 和 "Ethereum". 使用加密货币将在 DigitalSignature 对象中产生其他适当的参数.
- "HashingMethod"->None 直接构建 expr 的数字签名,不对它进行哈希. 此处,expr 必须是一个字节数组或十六进制字符串.
- "HashingMethod"->"h" 实际上使用 Hash[expr,"h"] 对 expr 进行哈希.
- "SignatureType" 的可能的设置包括:
-
"Deterministic" 用 expr 作为伪随机源 "NonDeterministic" 使用系统特定的随机源 Automatic 尽可能使用非确定性方法;否则使用确定性方法 - 对于散列方法 "Adler32","CRC32" 和 None,"SignatureType""Deterministic" 使用 "SHA256" 从输入中衍生伪随机性.
范例
打开所有单元关闭所有单元基本范例 (5)
用你的私钥生成数字签名. 此消息出现在 Bitcoin 区块链的 0 区块中:
这相当于手动构建一个摘要并使用 "HashingMethod" -> None:
范围 (4)
选项 (8)
Method (8)
使用完整的 Method 选项,根据从你的输入推得的伪随机性生成确定性数字签名:
通过基于椭圆曲线的密钥使用 Schnorr 数字签名算法对消息进行签名:
用私钥为给定的字符串生成数字签名,使用 "SHA1" 哈希方法:
用私钥为给定的字符串生成数字签名,使用 "MD5" 哈希方法:
用私钥为给定的字符串生成数字签名,使用 "X931" 哈希方法:
生成类型为 "EllipticCurve" 的非对称密钥对:
应用 (3)
对文件进行签名 (1)
可能存在的问题 (2)
如果 PrivateKey 的类型和 GenerateDigitalSignature 的 Method 选项指定的 "Type"不匹配,则发出一条警告,并用私钥的类型计算数字签名:
此处, GenerateDigitalSignature 使用 "RSA":
文本
Wolfram Research (2019),GenerateDigitalSignature,Wolfram 语言函数,https://reference.wolfram.com/language/ref/GenerateDigitalSignature.html (更新于 2020 年).
CMS
Wolfram 语言. 2019. "GenerateDigitalSignature." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2020. https://reference.wolfram.com/language/ref/GenerateDigitalSignature.html.
APA
Wolfram 语言. (2019). GenerateDigitalSignature. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/GenerateDigitalSignature.html 年