1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
import java.security.*; public class Firmar { public static void main(String[] args) { try { KeyPairGenerator keyGen = KeyPairGenerator.getInstance("DSA"); // Inicia keyGen SecureRandom numero = SecureRandom.getInstance("SHA1PRNG"); keyGen.initialize(1024, numero); // Se crea el par de claves KeyPair par = keyGen.generateKeyPair(); PrivateKey clavepriv = par.getPrivate(); PublicKey clavepub = par.getPublic(); // Firmar con clave privada Signature dsa = Signature.getInstance("SHA1withDSA"); dsa.initSign(clavepriv); String mensaje = "Mensaje para firmar"; dsa.update(mensaje.getBytes()); byte[] firma = dsa.sign(); // MENSAJE FIRMADO // Verificar con clave pública Signature verificadsa = Signature.getInstance("SHA1withDSA"); verificadsa.initVerify(clavepub); verificadsa.update(mensaje.getBytes()); boolean check = verificadsa.verify(firma); if (check) System.out.println("Firma correcta"); else System.out.println("Firma incorrecta"); } catch (NoSuchAlgorithmException el) { el.printStackTrace(); } catch (InvalidKeyException e) { e.printStackTrace(); } catch (SignatureException e) { e.printStackTrace(); } } } |