Documentation développeur
Java
Mis à jour le 19 septembre 2026

Hachage cryptographique en Java

Calculez des empreintes SHA-256 et encodez-les en hexadécimal ou Base64 en Java.

Les fonctions de hachage cryptographique transforment une entrée arbitraire en une empreinte déterministe de taille fixe. SHA-256 constitue un bon choix par défaut pour les sommes de contrôle et la vérification d’intégrité.

Démarrage rapide#

L’exemple suivant utilise l’API standard de Java ou une bibliothèque couramment utilisée pour cette tâche.

Exemple#

Java
1import java.nio.charset.StandardCharsets;2import java.security.MessageDigest;3import java.util.HexFormat;45MessageDigest md = MessageDigest.getInstance("SHA-256");6byte[] digest = md.digest("ToolPorta".getBytes(StandardCharsets.UTF_8));7String hex = HexFormat.of().formatHex(digest);8System.out.println(hex);

Opérations courantes#

Ce second exemple couvre une opération fréquente en production ou une manière plus sûre de traiter des entrées réelles.

Variante courante#

Java
1MessageDigest md = MessageDigest.getInstance("SHA-256");2try (InputStream in = Files.newInputStream(Path.of("archive.zip"))) {3    byte[] buffer = new byte[];4    int read;5    while ((read = in.read(buffer)) != -) {6        md.update(buffer, , read);7    }8}9String checksum = HexFormat.of().formatHex(md.digest());

Points importants#

Hachez des octets avec un encodage explicite. Pour les mots de passe, utilisez un algorithme dédié comme Argon2id, bcrypt ou PBKDF2 plutôt qu’un SHA brut.

Bonnes pratiques#

  1. Considérez toute entrée externe comme non fiable et gérez explicitement les erreurs d’analyse ou de validation.
  2. Rendez explicites l’encodage, les unités, les formats et les conventions propres aux bibliothèques aux frontières du système.
  3. Ajoutez des tests couvrant l’entrée vide, le texte Unicode, les entrées invalides et des données représentatives de la production.

Références#

Implémenter Hashing dans d'autres langages :