FileHash

FileHash[file]

给出指定文件内容的整数哈希码.

FileHash[file,"type"]

给出指定类型的整数哈希码.

FileHash[file,"type","format"]

以指定格式给出哈希码.

FileHash[{file,range},]

给出指定范围内字节的哈希码.

FileHash[{filespec1,filespec2,},]

给出一系列文件的哈希码.

更多信息

  • FileHash 生成的值是基于文件中的原始字节.
  • 可用 "file", File["file"]CloudObject["url"]InputStream[] 指定文件. 必须用 BinaryFormatTrue 打开输入流.
  • FileHash 支持以下 range 指定:
  • nn 个字节
    -n最后 n 个字节
    {n}n 个字节
    {m,n}m 到第 n 个字节
    0没有字节
    All所有字节
  • FileHash[{stream,range},] 提取输入流中指定字节位置范围内的数据,忽略先前的流位置.
  • 每个 filespec 可以是 file{file,range}.
  • 可能的哈希码类型包括:
  • "Adler32"阿德勒 (Adler) 32 位循环冗余校验
    "CRC32"32 位循环冗余校验k
    "MD2"128 位 MD2 码
    "MD4"128 位 MD4 码
    "MD5"128 位 MD5 码(默认)
    "RIPEMD160"160 位 RIPEMD 码
    "RIPEMD160SHA256"RIPEMD-160 后跟 SHA-256(在比特币中使用)
    "SHA"160 位 SHA-1 码
    "SHA256"256 位 SHA 码
    "SHA256SHA256"双 SHA-256 编码(在比特币中使用)
    "SHA384"384 位 SHA 码
    "SHA512"512 位 SHA 码
    "SHA3-224"224 位 SHA3 码
    "SHA3-256"256 位 SHA3 码
    "SHA3-384"384 位 SHA3 码
    "SHA3-512"512 位 SHA3 码
    "Keccak224"224 位 Keccak 码
    "Keccak256"256 位 Keccak 码
    "Keccak384"384 位 Keccak 码
    "Keccak512"512 位 Keccak 码
  • FileHash 默认使用 128 位 MD5 码.
  • 可能的格式包括:
  • "Integer"整数(默认)
    "DecimalString"十进制字符串
    "HexString"十六进制字符串
    "Base36String"base-36 字母数字字符串
    "Base64Encoding"Base64 编码
    "ByteArray"以显式的字节数组形式给出的哈希码
  • 为了与 Wolfram 语言的早期版本兼容,还支持语法 FileHash[file,"type",range]FileHash[file,"type",range,"format"].

范例

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

基本范例  (5)

文件的指纹:

文件的 "SHA512" 哈希码:

文件的前 100 个字节的 "SHA512" 哈希码:

十六进制形式的 "MD5" 哈希码:

CloudObject 的哈希:

范围  (11)

文件和范围指定  (6)

计算文件前 100 个字节的哈希码:

等价于:

计算最后 100 个字节的哈希码:

等价于:

计算第 100 个到 第 200 个字节的哈希码:

计算除了前 100 个字节和最后 100 个字节之外的所有字节的哈希码:

只计算第 100 个字节的哈希:

计算没有任何字节情况下的哈希码:

计算几个文件的哈希:

计算整个文件及其几个子集的哈希:

创建一个 CloudObject

给出 CloudObject 中数据的哈希:

默认情况下,给出完整的 MD5 哈希:

对于哈希,来自 CloudObject 的数据被表示为包含换行符的字符串:

用字节序列表示同一个哈希:

打开二进制流:

计算它的哈希:

不管当前流的位置如何,都会给出相同的结果:

关闭流:

创建一个空文件和云对象:

将相同的内容放在文件和云对象中:

同时打开指向文件的流:

所有三个对象的哈希都相同:

关闭流:

哈希的类型和格式  (5)

比较不同的哈希码:

用整数给出的 512 位的 SHA 编码:

用十进制字符串给出的 512 位的 SHA 编码,包括开头的零:

比较哈希码的不同字符串表示:

ByteArray 给出的文件的前 50 个字节的双 SHA 编码:

字节数组包含了 256 位的编码结果:

查看数组中的各个字节:

属性和关系  (10)

默认格式为 "MD5"

默认范围为 All

等价于 {-1,1}

对零个字节进行哈希编码相当于计算空文件的哈希码:

"Integer" 为默认格式:

"DecimalString""Integer" 的字符串版本,必要的情况下添上零:

"HexString" 是基数为 16 的表示,必要的情况下添上零:

"Base36String" 是基数为 36 的表示,必要的情况下添上零:

"Base64Encoding" 用 Base64 编码对结果的字节进行编码:

FileHash[file,code] 实际上相当于 Hash[ReadByteArray[file],code]

FileHash[file,code] 实际上相当于 Hash[ByteArray@Import[file,"Byte"]]

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

文本

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

CMS

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

APA

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

BibTeX

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

BibLaTeX

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