Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Java - MessageDigest
Forum - Java - MessageDigest

Avatar
jimi (Normal User)
Newbie


Messaggi: 6
Iscritto: 01/09/2006

Segnala al moderatore
Postato alle 12:58
Lunedì, 30/10/2006
Ciao qualcuno può indicarmi qualche sito dove posso trovare informazioni riguardo al MessageDigest di java?
Ho un problemino di questo genere da svolgere però...

PUNTO 1:
GENERARE UNA COPPIA DI CHIAVI CON RSA
PARAMETRI --> RSA/ECB/PKC1Padding (1024)
PUNTO 2:
SALVARE LE CHIAVI SU FILE
PUNTO 3:
DATO UN FILE IN INGRESSO CALCOLARE IL DIGEST DEL FILE E FIRMARLO CON LA CHIAVE PRIVATA.
PUNTO 4:
DECIFRARE IL DIGEST E VERIFICARE CHE SIA LO STESSO
PUNTO 5:
VERIFICARE CHE IL RISULTATO OTTENUTO DIGEST+FIRMA SIA UGUALE A QUELLO CHE SI SAREBBE OTTENUTO UTILIZZANDO "Signature" DI JAVA

PM Quote
Avatar
jimi (Normal User)
Newbie


Messaggi: 6
Iscritto: 01/09/2006

Segnala al moderatore
Postato alle 13:01
Lunedì, 30/10/2006
io avevo fatto una cosa del genere, ma quando verifico la firma mi dice sempre che questa non è valida...

KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");
kpg.initialize(1024);
KeyPair kp = kpg.generateKeyPair();
        
String filename=null;
FileDialog fileDialog=new FileDialog(new Frame(),"Selezionare il file di cui calcolare il digest");
while(true) {
fileDialog.setVisible(true);
            filename=fileDialog.getDirectory()+fileDialog.getFile();
if (filename!=null) break;
};
System.out.println("Calcoliamo il digest del file: "+filename);        
PublicKey publicKey = kp.getPublic();
PrivateKey privateKey = kp.getPrivate();

MessageDigest md = MessageDigest.getInstance("MD5");
BufferedInputStream in = new BufferedInputStream(new FileInputStream(filename));
        int b=0;
        while((b=in.read())!=-1){
            md.update((byte)b);
        }
        in.close();
        byte[] digest = md.digest();
        Signature sig = Signature.getInstance("MD5WithRSA");
        
        sig.initSign(privateKey);
        sig.update(digest);
        
        byte[] byteFirmati = sig.sign();
        
        sig.initVerify(publicKey);
        boolean verified=false;
        try{
            verified=sig.verify(byteFirmati);
        }catch(SignatureException se){
            verified = false;
        }
        if(verified)
            System.out.println("Ok!!Firma valida!!");
        else
            System.out.println("Firma non valida");

Qualcuno sa aiutarmi??
Grazie Francesco

Ultima modifica effettuata da jimi il 30/10/2006 alle 13:02
PM Quote