IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Calcul hash sha256 d'un fichier


Sujet :

Java

  1. #1
    Membre éprouvé
    Homme Profil pro
    Collégien
    Inscrit en
    Septembre 2014
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : Nouvelle-Zélande

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Septembre 2014
    Messages : 65
    Par défaut Calcul hash sha256 d'un fichier
    Bonjour à tous,

    Tout d'abord merci d'avance pour votre aide, et désolé pour cette question un peu bateau.

    Contexte : je transfère un fichier en streaming vers un serveur qui se charge de l'archiver, et me retourne la valeur du hash sha256 sous forme de string en base64 et l'algorithme de calcul de l’empreinte de l’objet numérique. Par défaut, la valeur de l'algorithme est : http://www.w3.org/2001/04/xmlenc#sha256

    Malheureusement, je suis un peu pris par le temps et n'ai pas le temps d'investiguer d'avantage sur comment exploiter cette url afin de hasher de mon côté le fichier envoyé et vérifié l'intégrité de ce dit fichier.
    De prime abord sans réfléchir je dirais qu'il faudrait juste parser cette url, mais je me doute qu'elle peut être utilisée sans "bidouille" mais je n'ai pas trouvé de documentation dessus.

    Merci d'avance pour votre aide
    Bonne soirée

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Le calcul des hash est assez simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    // On lit le contenu du fichier :
    byte[] fileContentBytes = Files.readAllBytes( Paths.get("ton fichier") );
    // On crée le MessageDigest avec l’algorithme désiré :
    MessageDigest digest = MessageDigest.getInstance("SHA-256");
    // On calcule le hash :
    byte[] hash = digest.digest(fileContentBytes ); 
    // Que l'on encode en base64 (java 8 - sinon il faut une solution tierce)
    String encoded = Base64.getEncoder().encodeToString(hash);
    A noter que si le fichier est assez gros, il est préférable de le lire par bloc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    // On crée le MessageDigest avec l’algorithme désiré :
    MessageDigest digest = MessageDigest.getInstance("SHA-256");
    // On ouvre le fichier en lecture
    try (InputStream input = Files.newInputStream( Paths.get("ton fichier") )) {
        byte[] buf = new byte[8192];
        int len;
        while ( (len=input.read(buf)) > 0 ) {
            digest.update(buf, 0, len);
        }
    }
    // On calcule le hash :
    byte[] hash = digest.digest(); 
    // Que l'on encode en base64 (java 8 - sinon il faut une solution tierce)
    String encoded = Base64.getEncoder().encodeToString(hash);


    a++

  3. #3
    Membre éprouvé
    Homme Profil pro
    Collégien
    Inscrit en
    Septembre 2014
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : Nouvelle-Zélande

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Septembre 2014
    Messages : 65
    Par défaut
    Salut !

    Merci pour ta réponse, ma question était surtout de savoir comment exploiter le lien http://www.w3.org/2001/04/xmlenc#sha256 et si une api permettait de hasher en utilisant l'algorithme référencé histoire de ne pas avoir maintenir le code si jamais la méthode était modifiée et avait pour valeur non plus ha256 mais sha512 par exemple.

    Bonne journée

  4. #4
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Ben l'URL t'indique juste l’algorithme utilisé pour le calcul du hash.
    A toi de spécifier le bon nom dans chaque cas s'il peut varier...

  5. #5
    Membre éprouvé
    Homme Profil pro
    Collégien
    Inscrit en
    Septembre 2014
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : Nouvelle-Zélande

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Septembre 2014
    Messages : 65
    Par défaut
    Ok merci, tu confirmes la validité de mon implémentation
    Bonne journée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. recuperer (ou calculer le CRC d'un fichier)
    Par johannlb dans le forum VB.NET
    Réponses: 6
    Dernier message: 02/08/2007, 17h15
  2. Calculer la taille d'un fichier
    Par Creuvard dans le forum C
    Réponses: 9
    Dernier message: 01/06/2007, 10h53
  3. Calculer le MD5 d'un fichier octet par octet
    Par bouazza92 dans le forum C
    Réponses: 5
    Dernier message: 09/08/2006, 20h39
  4. Calcul du hashage d'un fichier uploadé
    Par choubiroute dans le forum Langage
    Réponses: 1
    Dernier message: 13/04/2006, 18h25
  5. Réponses: 11
    Dernier message: 13/01/2006, 21h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo