Verification de certificat

Fermé
mayanis26 Messages postés 14 Date d'inscription vendredi 1 avril 2016 Statut Membre Dernière intervention 21 février 2017 - 18 avril 2016 à 22:40
KX Messages postés 16747 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 9 juillet 2024 - 23 avril 2016 à 17:49
bonsoir jai une question j'ai crée un faux certificat de format text sous java et j'ai haché avec MD5 et signé avec la clé privé de mon autorité et lorsque j’essaye de dechiffrer pour comparer le haché je trouve pas le même résultat car l'un est en exadecimal et l'autre c'un code non compris. SOS

1 réponse

KX Messages postés 16747 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 9 juillet 2024 3 017
Modifié par KX le 19/04/2016 à 12:48
Bonjour,

Merci de fournir ton code et des exemples d'entrées et de sorties que tu obtiens parce que tes explications ne sont pas claires.

Mais si j'en crois ton autre intervention (que j'ai supprimé, pas la peine de se disperser) ce que tu affiches c'est le tableau, pas son contenu.

import java.util.Arrays;

String[] tab = {"1", "2", "3"};
System.out.println(tab); // [Ljava.lang.String;@2a139a55
System.out.println(Arrays.toString(tab)); // [1, 2, 3]

Voir la documentation de la méthode toString pour comprendre le résultat.
La confiance n'exclut pas le contrôle
mayanis26 Messages postés 14 Date d'inscription vendredi 1 avril 2016 Statut Membre Dernière intervention 21 février 2017
Modifié par KX le 21/04/2016 à 12:15
voici le code lorsque je hache et je signe avc la clé privé
String infoForHash = nom+" "+prenom+" "+uniqueId+" "+fonction+" "+publicKeyClient+" RSA "+"md5 "+dateExp;
System.out.println("le clair est:"+infoForHash);
String hash = MD5.encode(infoForHash);
     
System.err.println("les info hacher sont : "+hash);
     
byte[] Signature = Serveur.rsaServer.crypt("hash");

String certificat = infoForHash+" "+Signature;
addCrt(certificat);

voilai ici c'est bon lorsque je recupere ce quil ya dans le fichier la signature =je trouve ca [B@879864 la suite du code:
byte[] sign1= sign.getBytes();
String dechiffr = Serveur.rsaServer.decryptInString(sign1);

eh bein je recupere pa la meme chose je doit avoir le haché (hash)
0
KX Messages postés 16747 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 9 juillet 2024 3 017
21 avril 2016 à 13:09
Je ne sais pas ce que tu manipules, d'où viennent les classes/méthodes MD5.encode, Serveur.rsaServer.crypt/decrypt et addCrt ? Je suis censé deviner ?

De plus, comme je l'ai déjà expliqué plus haut, les affichages "[B@879864" sont issus du toString de Object, ça représente l'objet tableau, pas son contenu.

Voici un exemple de hachage et cryptage en pur Java :

import java.security.*;
import java.util.Arrays;

import javax.crypto.Cipher;

public class Test {
    public static void main(String[] args) throws Exception {

        String text = "toto";
        System.out.println("le texte est: " + text);

        // MD5

        MessageDigest md5 = MessageDigest.getInstance("MD5");

        byte[] hash = md5.digest(text.getBytes());
        System.out.println("le hash est: " + Arrays.toString(hash));

        // RSA

        Cipher rsa = Cipher.getInstance("RSA");
        KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
        KeyPair keys = keyGen.generateKeyPair();

        // encrypt

        rsa.init(Cipher.ENCRYPT_MODE, keys.getPublic());
        byte[] encrypt = rsa.doFinal(hash);
        System.out.println("le crypté est: " + Arrays.toString(encrypt));

        // decrypt

        rsa.init(Cipher.DECRYPT_MODE, keys.getPrivate());
        byte[] decrypt = rsa.doFinal(encrypt);
        System.out.println("le décrypté est: " + Arrays.toString(decrypt));

        // verif

        System.out.println(Arrays.equals(hash, decrypt)); // true
    }
}
0
mayanis26 Messages postés 14 Date d'inscription vendredi 1 avril 2016 Statut Membre Dernière intervention 21 février 2017 > KX Messages postés 16747 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 9 juillet 2024
23 avril 2016 à 16:26
Oui tout ca je l'ai compris mais la ligne 34 , moi je recupere le encrypt dans un fichier donc chaine de caractére et lorsque je lui mets .getbytes et je fais la ligne 34 je ne recupere pas le clair "text"
0
KX Messages postés 16747 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 9 juillet 2024 3 017
23 avril 2016 à 17:49
Le hachage est irréversible, si ce que tu cryptes c'est le hash, ce que tu décryptes ce sera le hash. Jamais tu ne retrouveras le message d'origine à partir du hash.
0