Documentation développeur
JavaScript
Mis à jour le 18 septembre 2026

Hachage cryptographique en JavaScript (SHA-256)

Calculez des empreintes cryptographiques SHA-256 et SHA-512 en JavaScript avec Web Crypto et le module crypto de Node.js.

Les fonctions de hachage cryptographique transforment des données de taille arbitraire en une empreinte de taille fixe et déterministe. En JavaScript, elles sont incontournables pour vérifier l'intégrité de fichiers, générer des signatures d'API ou concevoir des clés de cache uniques.

Démarrage rapide (Navigateurs et Edge)#

L'API standard Web Crypto (crypto.subtle) est disponible dans tous les navigateurs modernes, Cloudflare Workers, Deno et Node.js 16+ :

JavaScript
1async function sha256(message) {2  // 1. Encodage UTF-8 des données3  const encoder = new TextEncoder();4  const data = encoder.encode(message);56  // 2. Calcul du condensat SHA-2567  const hashBuffer = await crypto.subtle.digest("SHA-256", data);89  // 3. Conversion du tampon binaire en chaîne hexadécimale10  const hashArray = Array.from(new Uint8Array(hashBuffer));11  const hexString = hashArray12    .map((b) => b.toString().padStart(, "0"))13    .join("");1415  return hexString;16}1718// Exemple d'utilisation19sha256("ToolPorta Secure Payload").then(console.log);20// Résultat : "ebaaafbb17fa16f0be7ab74c04e07c985bf0913468f82bb8d95627ee83a1a7f2"

Démarrage rapide (Backend Node.js)#

Dans les services backend Node.js, le module natif node:crypto offre un hachage direct et synchrone :

JavaScript
1import crypto from "node:crypto";23const empreinte = crypto4  .createHash("sha256")5  .update("ToolPorta Secure Payload")6  .digest("hex");78console.log(empreinte);9// Résultat : "ebaaafbb17fa16f0be7ab74c04e07c985bf0913468f82bb8d95627ee83a1a7f2"

Formats de sortie : Hex vs Base64#

Le condensat peut être exprimé en hexadécimal (64 caractères) ou en Base64 (44 caractères, plus compact pour les en-têtes HTTP) :

JavaScript
1import crypto from "node:crypto";23const texte = "Bonjour ToolPorta";45// Sortie hexadécimale6const hex = crypto.createHash("sha256").update(texte).digest("hex");78// Sortie Base649const base64 = crypto.createHash("sha256").update(texte).digest("base64");1011console.log("Hex :", hex);12console.log("Base64 :", base64);

Bonnes pratiques#

  1. SHA-256 par défaut : Standard industriel offrant un équilibre parfait entre rapidité et sécurité.
  2. Ne stockez pas de mots de passe avec de simples hash SHA : Utilisez des algorithmes avec facteur de coût (Argon2id, bcrypt ou PBKDF2).
  3. Encodez explicitement en UTF-8 : Utilisez toujours TextEncoder pour éviter les incohérences d'encodage selon les plateformes.

Références#

Implémenter Hashing dans d'autres langages :