
La clase Signature
del paquete java.security
permite realizar una firma digital, así como hacer su verificación.
Los pasos que debes seguir para realizar la firma de un mensaje y después verificarla son los siguientes:
- Generar las claves públicas y privadas mediante la clase
KeyPairGenerator
:- La
PrivateKey
la utilizaremos para firmar. - La
PublicKey
la utilizaremos para verificar la firma.
- La
- Realizar la firma digital mediante la clase
Signature
y un algoritmo asimétrico, por ejemploDSA
.- Crearemos un objeto
Signature
. - Al método
initSign()
le pasamos la clave privada. - El método
update()
creará el resumen de mensaje. - El método
sign()
devolverá la firma digital.
- Crearemos un objeto
- Verificar la firma creada mediante la clave pública generada.
- Al método
initVerify()
le pasaremos la clave pública. - Con
update()
se actualiza el resumen de mensaje para comprobar si coincide con el enviado. - El método
verify()
realizará la verificación de la firma.
- Al método
EL algoritmo de firma digital DSA viene implementado en el JDK de SUN, es parte del estándar de firmas digitales DSS y con él se pueden utilizar los algoritmos de resumen MD5 y SHA-1. Es el que utilizaremos en nuestro ejemplo.
En este enlace encontrarás un proyecto Java completo que firma digitalmente un texto y verifica su firma digital.