GenerateFileSignature

GenerateFileSignature["file",key]

使用指定的私钥生成 file 的数字签名.

GenerateFileSignature[{"file",range},key]

生成 file 中指定字节 range 的数字签名.

GenerateFileSignature[{{"file1",range1},{"file2",range2},},key]

生成每个指定的 fileirangei 的数字签名.

GenerateFileSignature[key]

表示可应用于文件的 GenerateFileSignature 的运算符形式.

更多信息和选项

  • GenerateFileSignature 返回 DigitalSignature 对象.
  • GenerateFileSignature 生成的值基于文件中的原始字节.
  • 签名的类型由密钥的类型决定.
  • keyPrivateKey 对象. 密钥可能的类型为 "EllipticCurve""RSA".
  • GenerateFileSignature 支持以下 range 指定:
  • nn 个字节
    -n最后 n 个字节
    {m,n}m 到第 n 个字节
    0零个字节
    All所有字节
  • 范围指定 All 等价于 {1,-1}.
  • 同时还支持 GenerateFileSignature[File["file"],]GenerateFileSignature[CloudObject[],].
  • GenerateFileSignature 有以下选项:
  • Method Automatic签名方法的详细信息
  • 通过设置 Methodassoc,关联 assoc 给出要使用的签名方法的详细信息.
  • 对于 "RSA",关联中可以包含以下元素:
  • "HashingMethod""SHA256"怎样哈希文件的内容
    "Padding""PKCS1"填充方案
  • 目前支持的填充方案为 "PKCS1""X931".
  • 对于 "RSA",支持的 "HashingMethod" 的值与 GenerateDigitalSignature 一样.
  • 对于 "EllipticCurve""Schnorr",关联中可以包含以下元素:
  • "CurveName""secp256k1"使用的椭圆曲线
    "HashingMethod""SHA256"怎样哈希文件的内容
    "SignatureType"Automatic数字签名生成模式
  • $CryptographicEllipticCurveNames 中列出了 "CurveName" 可能的设置.
  • 当前支持的唯一椭圆曲线是 "secp256k1".
  • "HashingMethod""h" 实际上使用 Hash[...,"h"] 哈希文件中的字节.
  • "SignatureType" 的可能设置包括:
  • "Deterministic"expr 作为伪随机性的源
    "NonDeterministic"使用系统特定的随机性源
    Automatic尽可能使用非确定性方法,否则使用确定性方法
  • 对于哈希方法 "Adler32""CRC32""SignatureType""Deterministic""SHA256" 从输入中导出伪随机性.
  • 请查看 GenerateDigitalSignature 获取完整的信息.

范例

打开所有单元关闭所有单元

基本范例  (2)

选择一个文件,生成数字签名:

生成基于椭圆曲线的密钥对:

用你的私钥生成数字签名:

用你的公钥验证数字签名:

用 RSA 密钥对对文件签名并验证签名:

范围  (5)

文件类型  (2)

CloudObject 进行数字签名:

File 对象指定的文件创建签名:

字节范围  (1)

分别对文件的不同部分签名:

为文件的前 100 个字节计算签名:

计算最后 100 个字节的签名:

计算第 100 个到第 200 个字节的签名:

计算除前 100 个字节外所有字节的签名:

验证所有签名:

运算符形式  (1)

生成基于椭圆曲线的密钥对:

GenerateDigitalSignature 的运算符形式应用于文件:

用你的公钥验证数字签名:

多个文件  (1)

用同样一组密钥对多个文件进行签名:

验证签名:

选项  (1)

Method  (1)

基于从你的输入值导出的伪随机性使用所有的 Method 选项生成确定性数字签名,使用 SHA512 哈希函数:

使用双 SHA256 哈希生成签名:

属性和关系  (1)

将文件上传到 Wolfram Cloud,保持文件内容完好. 验证原始文件和云端副本的数字签名时,它们均有效:

将文件复制到云端:

为本地文件创建签名:

为云端的文件创建签名:

文件和签名的所有可能组合均有效:

可能存在的问题  (1)

如果两个文件选定的字节的范围相同,则文件签名将相同:

找出第一个文件,并对前 150 个字节进行数字签名:

找出第二个文件,并对前 150 个字节进行数字签名:

对于每个文件来说,生成的签名是可验证的:

对于 RSA,签名也是一样的:

Wolfram Research (2020),GenerateFileSignature,Wolfram 语言函数,https://reference.wolfram.com/language/ref/GenerateFileSignature.html (更新于 2020 年).

文本

Wolfram Research (2020),GenerateFileSignature,Wolfram 语言函数,https://reference.wolfram.com/language/ref/GenerateFileSignature.html (更新于 2020 年).

CMS

Wolfram 语言. 2020. "GenerateFileSignature." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2020. https://reference.wolfram.com/language/ref/GenerateFileSignature.html.

APA

Wolfram 语言. (2020). GenerateFileSignature. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/GenerateFileSignature.html 年

BibTeX

@misc{reference.wolfram_2024_generatefilesignature, author="Wolfram Research", title="{GenerateFileSignature}", year="2020", howpublished="\url{https://reference.wolfram.com/language/ref/GenerateFileSignature.html}", note=[Accessed: 18-November-2024 ]}

BibLaTeX

@online{reference.wolfram_2024_generatefilesignature, organization={Wolfram Research}, title={GenerateFileSignature}, year={2020}, url={https://reference.wolfram.com/language/ref/GenerateFileSignature.html}, note=[Accessed: 18-November-2024 ]}