SRI哈希生成器

为JS/CSS文件生成Subresource Integrity(SRI)哈希值,支持sha256/sha384/sha512三种算法,粘贴文本或上传文件均可,使用浏览器原生Web Crypto API计算,自动生成完整的script/link标签示例。

免费在线工具
Loading…

使用说明

通过顶部标签切换输入方式:粘贴文本模式下直接粘贴JS/CSS文件的完整内容;上传文件模式下选择本地文件读取其字节内容。

选择哈希算法(sha256/sha384/sha512,sha384是SRI最常用的默认选择),选择标签类型(<script>或<link>样式表),可选填资源URL,点击“计算 SRI 哈希”。工具会用浏览器原生的 crypto.subtle.digest API 对内容计算摘要,输出标准格式的 integrity 属性值(如 sha384-oqVuAfXRKap7fdgcCY5uykM6+R9GqQ8K/uxy9rx7HNQlGYl1kPzQho1wx4JwY8wC),并生成对应的完整HTML标签示例(含 integritycrossorigin="anonymous" 属性)供直接复制使用。

功能介绍

Subresource Integrity(SRI)是W3C制定的一种安全机制,用于确保浏览器从CDN等第三方来源加载的脚本/样式表文件未被篡改。原理是:在HTML标签上声明该资源内容的哈希摘要(integrity属性),浏览器下载资源后会重新计算摘要并与声明值比对,不一致就拒绝执行/应用该资源,从而防范CDN被劫持或中间人篡改导致的供应链攻击。

本工具支持SRI规范定义的全部三种摘要算法(sha256/sha384/sha512),摘要计算直接调用浏览器内置的Web Crypto API(crypto.subtle.digest),不依赖任何第三方哈希库,计算结果与浏览器实际校验时使用的算法完全一致。支持两种输入方式:粘贴文本内容(适合已经复制好的脚本源码)或直接上传文件(适合本地已下载的.js/.css文件),生成的完整标签示例可以直接复制粘贴到你的HTML里使用。

所有计算均在浏览器本地完成,不上传任何文件内容或文本到服务器。

使用场景

为CDN引入的第三方脚本/样式添加完整性校验
从jsDelivr、cdnjs、unpkg等CDN引入公共库时,计算其内容的SRI哈希并添加到script/link标签,防止CDN被篡改或劫持导致的恶意代码注入。
供应链安全加固
在项目安全审计或加固时,为所有跨域引入的静态资源统一添加SRI校验,降低对第三方CDN可用性和完整性的信任依赖。
自建CDN/静态资源发布流程集成
在构建脚本或发布流程中生成资源哈希,提前手动验证HTML中的integrity值是否与最终部署的文件内容一致。
验证已有integrity属性是否与文件内容匹配
对怀疑可能过期或错误的integrity值,粘贴对应文件的实际内容重新计算哈希,与页面现有的integrity值对比排查不一致的原因。

常见问题

为什么SRI只支持sha256/384/512,不支持md5或sha1?
W3C SRI规范明确只定义了sha256、sha384、sha512这三种摘要算法作为合法的integrity前缀,md5和sha1由于已被证明存在碰撞安全隐患,规范制定时就没有纳入支持范围,浏览器也不会识别其他算法前缀的integrity值。
应该选择哪个算法?
sha384是目前最常用的默认选择,在安全性和计算/存储开销之间取得了较好平衡,很多主流CDN(如jsDelivr、cdnjs)提供的示例代码默认也使用sha384。如果对安全性有更高要求可以选sha512,存储开销略高;sha256计算更快但安全边际相对较小。
为什么标签里要加crossorigin属性?
浏览器的SRI校验机制要求以CORS模式请求跨域资源才能读取到用于比对的响应内容,如果不加crossorigin属性,跨域请求会以no-cors模式发出,浏览器无法读取响应内容进行完整性校验,SRI实际上会被静默跳过。因此从CDN等跨域来源引入资源并启用SRI时,必须同时设置crossorigin(通常是"anonymous")。
如果CDN上的文件更新了,我需要重新生成哈希吗?
是的。SRI的哈希值是针对文件当前内容计算的,文件内容发生任何变化(哪怕一个字节),摘要都会完全不同。如果你引用的CDN资源版本升级或内容更新,必须重新用本工具计算新内容的哈希并更新页面中的integrity属性,否则浏览器会因为哈希不匹配而拒绝加载/执行这个资源。