Verification de certificat

mayanis26 Messages postés 14 Date d'inscription   Statut Membre Dernière intervention   -  
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   -
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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
0
mayanis26 Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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   Statut Membre Dernière intervention   > KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention  
 
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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