Outils de développement · Calculateur de hachage SHA
Comment SubtleCrypto.digest calcule un hachage SHA-256 dans le navigateur
· Comment ça marche
sha-256 cryptographie API du navigateur
Chaque navigateur moderne peut hacher des octets de manière native via Web Crypto. Cet article suit une chaîne de TextEncoder jusqu'à crypto.subtle.digest jusqu'à un résumé hexadécimal et explique les contraintes de chaque étape.
Un hachage sans installation npm - les situations dans lesquelles un résumé natif bat une bibliothèque groupée
Vous pouvez calculer un résumé pour une valeur de texte courte sans installer de package de hachage ni publier de données sur un site Web de hachage distant. Les navigateurs exposent crypto.subtle.digest sur des origines sécurisées. Un hachage est une empreinte déterministe d’octets de longueur fixe ; il ne cache pas l'entrée et ne prouve pas qui l'a fournie. ToolAcre utilise l'implémentation du navigateur plutôt que de fournir un algorithme SHA écrit à la main et conserve la chaîne hachée dans l'onglet.
Le texte n'est pas des octets - encodant l'entrée avec TextEncoder en UTF-8 avant le hachage, et pourquoi cette étape décide de la réponse
Le texte « café » et les octets introduits dans un hachage ne sont pas le même type d'objet. TextEncoder mappe la chaîne sur UTF-8 bytes (63 61 66 C3 A9 pour café), alors qu'une conversion naïve Latin-1 aurait utilisé E9 pour le caractère final et produit un résumé différent. Même un texte visuellement identique peut avoir différentes formes de normalisation Unicode. Convenez du codage et de la normalisation avant de comparer les hachages sur JavaScript, une CLI et un serveur. Le mode texte de ToolAcre effectue explicitement sa conversion UTF-8 avant le hachage.
L'appel digest - crypto.subtle.digest avec un nom d'algorithme et un ArrayBuffer, et pourquoi il renvoie une promesse
crypto.subtle.digest("SHA-256", bytes) renvoie une promesse car le travail cryptographique peut être asynchrone ; attendez-le avant de lire la sortie. La méthode prend l’intégralité du tampon d’entrée plutôt qu’un itérateur de streaming. SHA-256 émet 256 bits (32 bytes), que l'entrée contienne trois caractères ou trois millions. La restriction de contexte sécurisé signifie que HTTPS ou localhost est requis pour l'API SubtleCrypto, et l'outil signale son absence au lieu d'inventer une solution de secours.
De ArrayBuffer à hex - transformer les octets de résultat en chaîne de 64 caractères que les gens reconnaissent
La promesse se résout en un ArrayBuffer d'octets, et non en la chaîne familière de chiffres hexadécimaux. Convertissez chaque octet en deux caractères base 16 avec un zéro non significatif si nécessaire, ce qui donne exactement 64 caractères minuscules pour SHA-256. Cette représentation hexadécimale double la longueur du 32 bytes, mais ne modifie pas le résumé. Base64 pourrait représenter le même 32 bytes de manière plus compacte ; une comparaison n'a de sens qu'après avoir confirmé la correspondance de l'algorithme, du codage d'entrée et de la représentation de sortie.
Exemple concret : hacher une courte chaîne étape par étape, en affichant les octets à chaque étape
Pour le texte ASCII abc, UTF-8 produit les octets 61 62 63. SHA-256 de ces octets exacts est ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad. Testez cela dans ToolAcre et une autre implémentation de hachage fiable : changer abc en abc suivi d'une nouvelle ligne donne un résultat différent. Si les résultats diffèrent, inspectez les espaces cachés et le codage des octets avant de suspecter la primitive cryptographique. Le résumé affiché est un vecteur de test reproductible et non une affirmation selon laquelle ABC est un secret.
Contextes sécurisés : pourquoi crypto.subtle n'est disponible que sur HTTPS et localhost
crypto.subtle est une API à contexte sécurisé. Une page HTTPS de production et une page de développement localhost l'exposent généralement ; une page HTTP distante non sécurisée ordinaire ne le sera peut-être pas. L'outil a également besoin de suffisamment de mémoire pour contenir l'entrée et la sortie. Lorsque Web Crypto n'est pas disponible, le passage silencieux à un hachage JavaScript non vérifié ferait dépendre un résultat sensible en matière de sécurité d'une implémentation différente. Échouez clairement et choisissez plutôt un environnement sécurisé.
Ce que cela ne couvre pas : le hachage par clé (HMAC) et le hachage incrémentiel d'entrées très volumineuses, que l'API one-shot digest ne fournit pas
L'API One-Shot Digest n'est pas un hachage incrémentiel pour des fichiers volumineux. SHA-256 n'est pas un système de stockage de mots de passe : les hachages rapides et non salés rendent les devinettes bon marché, le stockage des mots de passe nécessite donc un KDF spécialement conçu, salé et délibérément coûteux. SHA-1 peut être affiché pour l'interopérabilité existante, mais sa résistance aux collisions est brisée et ce n'est pas un bon choix pour les nouveaux systèmes d'intégrité ou de signature. HMAC est une authentification par clé, ce n'est pas la même opération que la digestion d'octets non authentifiés.
À retenir : le navigateur dispose déjà d'une fonction de hachage — le calculateur de hachage ToolAcre SHA utilise exactement cette API, sa sortie est donc celle du navigateur
Le navigateur fournit déjà SHA-256 : codez le texte sous forme d'octets, attendez le résumé, puis formatez son résultat pour comparaison. Le calculateur de hachage ToolAcre SHA suit ce chemin pour le texte collé et étiquette SHA-1 comme étant uniquement hérité. Comparez d'abord abc avec le résultat connu, puis hachez le matériel non sensible dont vous comprenez les octets et l'encodage.