Cyril Rabat


Génération d'empreinte en Java

 25/11/2015     23/10/2017      Programmation Java      Programmation client/serveur      Sécurité   

Utilisation de l'algorithme de hachage SHA pour générer une empreinte

   Cet article montre comment utiliser la classe MessageDigest qui permet de générer une empreinte d'un message (ou d'un fichier).

Mots-clefs :   Java     empreinte     SHA     MessageDigest   

La classe présentée dans cet article permet de générer une empreinte d'un message passé en argument.

Le programme

Le programme ci-dessous exploite la classe MessageDigest pour générer une empreinte d'un message passé en argument. Dans un premier temps, l'empreinte est récupérée comme une instance de la classe MessageDigest. Puis, il suffit d'exploiter la méthode digest pour mettre à jour l'empreinte à partir d'une chaîne de caractères (ou bien du contenu d'un fichier). On obtient finalement un tableau d'octets.

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
 
/**
 * Classe permettant de tester le hachage avec SHA-256.
 * @author Cyril Rabat
 * @version 23/10/2017
 */
public class HachageMessage {
 
    /**
     * Méthode principale.
     * @param args[0] message dont on veut l'empreinte SHA-256
     */
    public static void main(String[] args) {
        // Vérification des arguments
        if(args.length != 1) {
            System.err.println("Utilisation :");
            System.err.println("  java HachageMessage message");
            System.err.println("    où :");
            System.err.println("      - message : message dont on veut produire l'empreinte");
            System.exit(-1);
        }
 
        // Préparation de l'empreinte
        MessageDigest empreinte = null;
        try {
            empreinte = MessageDigest.getInstance("SHA-256");
        } catch(NoSuchAlgorithmException e) {
            System.err.println("Problème avec SHA : " + e);
            System.exit(-1);
        }
 
        // Calcul de l'empreinte
        byte[] bytes = empreinte.digest(args[0].getBytes());
        String resultat = new String(bytes);
 
        System.out.println("Message   : " + args[0]);
        System.out.println("Empreinte : " + resultat);
    }
 
}

 Télécharger le fichier

Utilisation

Pour utiliser le programme, tapez simplement la commande suivante (une fois le programme compilé) :

java HachageMessage "Bonjour tout le monde"

Articles connexes


Version de cette page Mercredi 16 Décembre 2015

© Cyril Rabat 2018

Connexion

Mot de passe perdu

Dernières nouvelles

20/07/2020 Vous pouvez consulter la page "prérentrée" pour avoir les informations sur les journées de prérentrées en Licence INFO.
16/07/2020 La première phase des inscriptions se termine le 21 juillet. La période pour la deuxième phase est du 19 au 31 août.
25/06/2020 La période pour la phase complémentaire pour la procédure VES est fixée du 10 juillet 2020 au 24 août 2021.
29/05/2020 Le jury de fin d'année aura lieu le jeudi 11 juin, les examens de deuxième session du 22 juin au 3 juillet et le jury de deuxième session le jeudi 16 juillet.

Contact

Courriel :
cyril.rabat [at] univ-reims.fr

Téléphone :
+33-326-91-33-81

Facebook :
lien Facebook direct