import java.io.*; import java.security.*; import java.security.spec.*; class VerificaFirmaLRYS { public static void main(String [] args) { if(args.length != 3) { System.out.println("Sintaxis del programa es: java VerificaFirmaLRYS ClavePublicaLRYS.bin FirmaLRYS.bin DocumentoLRYS.txt"); } else try { FileInputStream clavepublica = new FileInputStream(args[0]); byte[] clave = new byte[clavepublica.available()]; clavepublica.read(clave); clavepublica.close(); X509EncodedKeySpec pubKeySpec = new X509EncodedKeySpec(clave); KeyFactory keyFactory = KeyFactory.getInstance("RSA"); PublicKey pubKey = keyFactory.generatePublic(pubKeySpec); FileInputStream archivoFirmado = new FileInputStream(args[1]); byte[] firmaVerificada = new byte[archivoFirmado.available()]; archivoFirmado.read(firmaVerificada); archivoFirmado.close(); Signature firma = Signature.getInstance("MD5withRSA"); firma.initVerify(pubKey); FileInputStream datos = new FileInputStream(args[2]); BufferedInputStream buferEntrada = new BufferedInputStream(datos); byte[] buffer = new byte[1024]; int longitud; while(buferEntrada.available() != 0) { longitud = buferEntrada.read(buffer); firma.update(buffer, 0, longitud); } buferEntrada.close(); boolean verifica = firma.verify(firmaVerificada); System.out.println("Verificacion de la firma: " + verifica); } catch(Exception e) { System.err.println("El error es de " + e.toString()); } } }