Saltar la navegación

4.5.- Firma digital con la clase Signature de java.security.

Mano de una persona con un bolígrafo frente a la pantalla de un ordenador.

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.
  • Realizar la firma digital mediante la clase Signature y un algoritmo asimétrico, por ejemplo DSA.
    • 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.
  • 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.

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.

Autoevaluación

Pregunta

Señala las opciones correctas. Para realizar una firma digital con Signature:

Respuestas

Hay que pasar al método initVerify() la clave pública.

Al método initSign() se le pasa la clave privada.

Hay que actualizar con update() el resumen del mensaje.

La firma digital la devuelve el método sign().

Retroalimentación

Para saber más

Desde la versión de Java 6 es posible realizar firmas digitales en documentos XML. En el siguiente enlace encontrarás ejemplos de cómo poder realizar esto.

Firma digital XML.