貼り付けたアセットテキストから SHA-256、SHA-384、SHA-512 の SRI 値を生成します。オプションのリソース URL を追加すると、HTML の読み込み用スニペットを生成できます。
ブラウザ内でローカルに実行ページは貼り付けた JavaScript / CSS のテキストを Web Crypto API で Subresource Integrity の値に変換します。テキストを UTF-8 としてエンコードし、SHA-256・SHA-384・SHA-512 でバイト列をハッシュ化し、integrity 属性が期待する sha256-… 形式の base64 で出力します。
処理はすべてこのタブ内で完結します。テキストは送信されず、作業中にリクエストは発生しません。オプションの URL は、保護したいスクリプトやスタイルシートの隣に貼る HTML スニペットに書かれるだけです。
入力はテキストとして読み込まれ TextEncoder でエンコードされるため、ハッシュが対象にするのは欄にある内容そのものの UTF-8 バイト列です。abc を貼り付けると最初の行は sha256-ungWv48Bz+pBQUDeXa4iI7ADYaOWF3qctBD/YfIAFa0= になります。これは printf abc | openssl dgst -sha256 -binary | base64 と同じ値です。各ハッシュは生のダイジェストの base64 にアルゴリズム名とハイフンを付けたもので、integrity 属性が使う形式です。
1 文字変わるだけでハッシュは変わります。改行コードも同じです。CRLF で保存されたファイルや、エディターで折り返し直されたコピーは、配信されるファイルとは別のハッシュになります。本番でハッシュが一致しないときは、画面の文字ではなくバイト列を比べてください。
URL 欄は HTML に貼るタグを組み立てるためだけに使います。ページがその URL を取得することはありません。作業中にブラウザーからリクエストは出ません。.css で終わる URL(クエリやフラグメント付きも可)は <link rel="stylesheet" href="…" integrity="…" crossorigin="anonymous"> になり、それ以外は <script src="…"> になります。
受け付けるのは http://、https://、//ホスト、/パス、./パス、../パス で始まる URL だけです。引用符・空白・山かっこは拒否し、属性値は書き出す前にエスケープします。URL が不正なときは壊れたタグをコピーせずメッセージで停止し、直前の結果は画面から消えます。
Subresource Integrity はブラウザー側の検査です。スクリプトやスタイルシートは、バイト列が整合性の値と一致するときだけ実行されます。ハッシュが示すのは完全性であり、真正性ではありません。ファイルを差し替えられる相手はハッシュも計算し直せます。入力した URL がそのバイト列を配信しているかは確認しません。ファイルをダウンロードすることもありません。
入力がテキスト欄のため、バイナリファイル、圧縮されたバンドル、UTF-8 以外のエンコーディングのファイルはハッシュ化できません。それらはシェルで同じ digest コマンドを使ってください。URL 欄も検査ではありません。タグを手書きしなくて済むだけです。