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 |