SRI 哈希生成工具

粘贴脚本或样式表的文本,或选择其文件。您会得到完整性值、可粘贴到页面中的元素,以及对您已有的完整性值的核对结果。

免费 在浏览器中运行 核对于2026年11月10日星期二

此工具在您的浏览器中运行。您输入的内容不会发送给我们。

使用方法

  1. 将脚本或样式表的文本粘贴到“文件内容”中,或在“或选择文件”下选择文件。
  2. 选择“算法”。选择“三种全部使用”,即可为每种算法各写出一个值。
  3. 按页面加载文件的方式,准确输入“文件地址”。要粘贴的元素会显示在下方。
  4. 将“完整性值”或“要粘贴的元素”复制到页面中。若要核对已有的值,请把它粘贴到“要核对的完整性值”下。

完整性值如何生成

完整性值由哈希算法的名称、一个连字符,以及文件摘要的 base64 编码组成。浏览器对文件的字节逐一计算哈希,因此只要改变一个字节,值就会改变。所有符合标准的浏览器都支持 sha256、sha384 和 sha512(SRI 第3.2节)。Base64 使用 RFC 4648 的字母表,末尾以 = 号作填充(第4节)。

值中可以包含多个以空格分隔的项(第3.2.1节)。浏览器采用其所识别的各项中最强的算法,因此 sha512 优先于 sha256。

integrity = algorithm + "-" + base64(digest(bytes))
  • sha256:连字符之后为44个 base64 字符。
  • sha384:连字符之后为64个字符。
  • sha512:连字符之后为88个字符。

核对的作用与不能涵盖的内容

当文件的字节得出属性中最强算法的某个值时,核对即通过(SRI 第3.3节)。浏览器不认识的算法所对应的项会被跳过。若没有剩下任何项,核对会在不做比较的情况下通过,因此本工具会把这种情况报告为未核对。

该值并不说明文件来自何处,它只证明文件具有被计算过哈希的那些字节。每当文件变化时,例如库更新之后,请重新生成该值,并让它与元素保存在一起。

示例文本 abc

文本 abc 在 UTF-8 中是三个字节61 62 63。选择 sha256,并在文本框中输入 abc。该文本的完整性值即为下表中的值;要粘贴的元素会附带该值,并将 crossorigin 设为 anonymous。

算法 abc 的完整性值
sha256 sha256-ungWv48Bz+pBQUDeXa4iI7ADYaOWF3qctBD/YfIAFa0=
sha384 sha384-ywB1P0WjXou1oD1pmsZQBycsMqsO3tFjGotgWkP/W+2AhgcroefMI1i67KE0yCWn

常见问题

文件变化时,我是否必须更改该值?

是的。该值只对应一个确定的字节序列,因此即使只改动了一个空格,库的更新也会得到不同的值。在属性中写入新值之前,核对都会失败。

应该选择哪种算法?

所有浏览器都支持这三种算法(SRI 第3.2节)。sha384 比 sha256 更强,而它的值又比 sha512 短。若选择“三种全部使用”,即可为每种算法写出一个值,浏览器会核对最强的那一个。

为什么值中有算法名称和一个连字符?

名称告诉浏览器应计算哪种摘要。连字符用来结束名称,因为算法名称中没有连字符,而 base64 值的 URL 安全字母表中可能含有连字符,SRI 第3.5节允许这样做。

本工具会把我的文件发送到服务器吗?

不会。您的浏览器读取文件,并用浏览器的摘要方法(crypto.subtle)计算哈希。页面不发出任何网络请求,也不保存您输入或选择的任何内容。

为什么要粘贴的元素中包含 crossorigin?

对于另一来源的资源,SRI 要求使用 CORS(第5.3节),而将 crossorigin 设为 anonymous 即要求浏览器使用 CORS。元素对脚本和样式表都包含这一属性。

资料来源

数据和文字最近核对于2026年11月10日星期二。

我们使用必要的 Cookie 来运行网站。经您同意后,Google 还会使用广告 Cookie 展示个性化广告。如果您拒绝,仍会看到广告,但广告不会个性化。