使い方
- スクリプトかスタイルシートのテキストをファイルのテキストに貼り付けるか、またはファイルでファイルを選びます。
- アルゴリズムを選びます。アルゴリズムごとに1つずつ値を書くには、3つすべてを使います。
- ファイルのアドレスを、ページが読み込むとおりに入力します。貼り付ける要素が下に表示されます。
- 整合性の値または貼り付ける要素をコピーして、ページに貼り付けます。お持ちの値を確認するには、確認する整合性の値に貼り付けます。
値の作り方
整合性の値は、ハッシュアルゴリズムの名前、ハイフン、そしてファイルのダイジェストを Base64で書いたものです。ブラウザはファイルの正確なバイト列をハッシュ化するため、1バイトでも変われば値も変わります。準拠するブラウザはすべて sha256、sha384、sha512に対応しています(SRI の3.2節)。Base64は RFC 4648の文字を使い、末尾にパディングの = を付けます(4節)。
スペースで区切った複数の項目を持つ値も許されます(3.2.1節)。ブラウザは、知っている項目の中で最も強いアルゴリズムを使うため、sha256より sha512が優先されます。
integrity = アルゴリズム + "-" + base64(digest(バイト列))
- sha256:ハイフンの後ろは Base64で44文字です。
- sha384:ハイフンの後ろは64文字です。
- sha512:ハイフンの後ろは88文字です。
確認が何をし、何をしないか
確認は、ファイルのバイト列が、属性の中で最も強いアルゴリズムの値のどれかと一致すると通ります(SRI の3.3節)。ブラウザが知らないアルゴリズムの項目は飛ばされます。項目が1つも残らない場合、確認は何も比べずに通るため、このツールはその場合を確認なしと表示します。
値は、ファイルがどこから来たかを示しません。ハッシュ化されたバイト列を持っていることを示すだけです。ライブラリを更新したときなど、ファイルが変わるたびに値を作り直し、要素と同じ場所に保管してください。
テキスト abc の例
テキスト abc は、UTF-8では61 62 63の3バイトです。sha256を選び、テキストの欄に abc と入力してください。このテキストの整合性の値は表のとおりで、貼り付ける要素には、crossorigin を anonymous に設定した値が含まれます。
| アルゴリズム | abc の整合性の値 |
|---|---|
| sha256 | sha256-ungWv48Bz+pBQUDeXa4iI7ADYaOWF3qctBD/YfIAFa0= |
| sha384 | sha384-ywB1P0WjXou1oD1pmsZQBycsMqsO3tFjGotgWkP/W+2AhgcroefMI1i67KE0yCWn |
よくある質問
ファイルが変わったら、値も変える必要がありますか?
はい。値は、1つの正確なバイト列に対するものなので、ライブラリを更新すると、空白が1つ変わっただけでも別の値になります。属性が新しい値を持つまで、確認は失敗します。
どのアルゴリズムを選ぶべきですか?
すべてのブラウザが3つとも対応しています(SRI の3.2節)。sha384は sha256より強いダイジェストで、sha512より短い値です。3つすべてを選ぶと、それぞれの値を書き、ブラウザは最も強いものを確認します。
値に、アルゴリズム名とハイフンがあるのはなぜですか?
名前は、ブラウザにどのダイジェストを計算するかを伝えます。ハイフンは名前の終わりを示します。アルゴリズム名にはハイフンがありませんが、Base64の値は URL 安全な文字の中にハイフンを含むことがあり、SRI の3.5節が認めているためです。
このツールは、ファイルをサーバーに送りますか?
いいえ。お使いのブラウザがファイルを読み、ブラウザのダイジェストの機能(crypto.subtle)でハッシュ化します。ページはネットワークへのリクエストをせず、入力した内容や選んだファイルを保存もしません。
貼り付ける要素に crossorigin が含まれるのはなぜですか?
SRI は、別のオリジンのリソースには CORS を求めます(5.3節)。crossorigin を anonymous に設定すると、ブラウザに CORS の使用を求めます。この要素には、スクリプトとスタイルシートの両方にそれが含まれます。
出典
- W3C、Subresource Integrity(作業草案、2026年3月20日):3.2、3.3、3.5、5.3節(英語)
- RFC 4648:Base16、Base32、Base64のデータ符号化、4節(英語)
- MDN:SubtleCrypto.digest()(英語)
数値と文章の最終確認日:2026年11月10日火曜日。