Générateur d’intégrité des sous-ressources

Collez le texte exact du script ou du CSS pour calculer l’empreinte de ses octets UTF-8. L’URL sert à la balise ; son contenu n’est pas téléchargé.

Fonctionne localement dans votre navigateur
Tout dans cet outil est traité dans ce navigateur. KivTools ne télécharge pas, ne stocke pas et n’appelle aucune API tierce avec votre entrée.
Source de l'actifCollez les octets exacts sous forme de texte pour un script ou une feuille de style. Les hachages changent dès qu'un caractère change.
Algorithmes

Comment générer des empreintes d’intégrité SRI

La page transforme le texte JavaScript ou CSS collé en valeurs Subresource Integrity avec l’API Web Crypto. Le texte est encodé en UTF-8, les octets sont hachés en SHA-256, SHA-384 ou SHA-512, et chaque résultat s’affiche en base64 sous la forme sha256-… attendue par l’attribut integrity.

Tout se passe dans cet onglet : le texte n’est pas envoyé, aucune requête n’est faite pendant le calcul, et l’URL facultative ne sert qu’à écrire l’extrait HTML que vous placez à côté du script ou de la feuille de style à protéger.

  1. Collez le contenu exact du fichier dans la zone source. Une zone de texte ne transporte pas de binaire : elle convient au JavaScript, au CSS, au JSON ou au HTML lisibles.
  2. Cochez les algorithmes utiles. SHA-256 suffit pour la plupart des fichiers ; avec plusieurs, le navigateur retient le plus fort qu’il prend en charge.
  3. Facultatif : collez l’URL depuis laquelle le fichier sera servi — elle décide si l’extrait est une balise script ou une balise de feuille de style.
  4. Cliquez sur Générer de l’intégrité. La sortie affiche une ligne par algorithme, l’attribut integrity et l’extrait de balise.
  5. Copiez le résultat ou téléchargez sri-integrity.txt, puis comparez l’empreinte avec celle de votre outil de build avant de déployer.

Ce que couvrent les empreintes et ce que la page vérifie

Ce que la page calcule

L’entrée est lue comme du texte et encodée avec TextEncoder : l’empreinte couvre donc les octets UTF-8 de ce qui se trouve dans la zone. Collez abc et la première ligne est sha256-ungWv48Bz+pBQUDeXa4iI7ADYaOWF3qctBD/YfIAFa0=, la même valeur que printf abc | openssl dgst -sha256 -binary | base64. Chaque empreinte est le base64 du condensat brut, suivi du nom de l’algorithme après un tiret : le format utilisé par l’attribut integrity.

Un seul caractère change l’empreinte, y compris un saut de ligne. Un fichier enregistré en CRLF, ou une copie remise en forme par un éditeur, donne une empreinte différente du fichier déployé. Si une empreinte échoue en production, comparez les octets, pas le texte affiché.

L’URL et l’extrait

Le champ URL sert uniquement à construire la balise à coller dans le HTML. La page ne la télécharge pas : aucune requête ne quitte le navigateur pendant le calcul. Une URL terminée par .css, avec paramètre ou fragment facultatif, produit une balise <link rel="stylesheet" href="…" integrity="…" crossorigin="anonymous"> ; toute autre URL produit une balise <script src="…">.

Seules les URL http://, https://, //hôte, /chemin et ./chemin ou ../chemin sont acceptées ; guillemets, espaces et chevrons sont refusés, et les valeurs d’attribut sont échappées avant écriture. Une URL invalide arrête le calcul avec un message au lieu de copier une balise cassée, et le résultat précédent disparaît de l’écran.

Ce que le SRI ne fait pas ici

Subresource Integrity est un contrôle du navigateur : un script ou une feuille de style ne s’exécute que si ses octets correspondent à la valeur d’intégrité. Les empreintes prouvent l’intégrité, pas l’authenticité : qui peut modifier le fichier peut recalculer l’empreinte. Rien ici ne vérifie que l’URL saisie sert bien ces octets ; le fichier n’est jamais téléchargé.

Comme l’entrée est une zone de texte, l’outil ne peut pas calculer l’empreinte d’un binaire, d’un paquet compressé ni d’un fichier dans un autre encodage : ouvrez-les dans un shell et utilisez la même commande. Le champ URL n’est pas un contrôle non plus ; il vous évite seulement d’écrire la balise à la main.

Outils récents :