Saltar la navegación

4.6.- Encriptación con la clase Cipher del paquete javax.crypto.

Dibujo de un rótulo sobre blanco con la palabra Cipher en rojo. A la izquierda el texto 'Datos secretos' sobre un recuadro ammarillo, a la derecha de Cipher otro recuadro amarillo con un texto ilegible de caracteres $/&&/((((==)%¨*^. Debajo de la palabra Cipher dos flechas con puntas opuestas entre ambos recuadros.

La clase Cipher permite realizar encriptación y desencriptación, tanto con clave pública como privada. Para ello:

  • Mediante el método getInstance() se indica el algoritmo y proveedor que utilizará el objeto cifrador Cipher.
  • Mediante el método init() se indicará el modo de operación del objeto Cipher, por ejemplo encriptar o desencriptar.
  • Mediante los métodos update() y doFinall() se insertarán datos en el objeto cifrador.

Podemos utilizar diferentes modos de operación, entre ellos:

  • ENCRYPT_MODE. Es el modo encriptación.
  • DECRYPT_MODE. Es el modo desencriptación.
  • WRAP_MODE. Convierte la clave en una secuencia de bytes para transmitirla de forma segura.
  • UNWRAP_MODE. Permite obtener las claves generadas con WRAP_MODE.

La encriptación mediante un objeto Cipher puede ser:

  • De bloque o Block Cipher. El texto a cifrar se divide en bloques de una tamaño fijo de bits, normalmente 64 bits. Cada uno de estos bloques se cifra de manera independiente, y posteriormente se construye todo el texto cifrado. Si el texto a cifrar no es múltiplo de 64 se completa con un relleno o padding.

    Por ejemplo: Cipher.getInstance("Rijndael/ECB/PKCS5Padding") indica que:

    • Se utiliza el algoritmo Rijndael.
    • El modo es ECB (Electronic Code Book).
    • El relleno es PKCS5 Padding.
  • De flujo o Stream Cipher. El texto se cifra bit a bit, byte a byte o carácter a carácter, en lugar de bloques completos de bits. Resulta muy útil cuando hay que transmitir información cifrada según se va creando, eso es, se cifra sobre la marcha.

Autoevaluación

Pregunta

Señala la opción correcta. La clase Cipher:

Respuestas

Solo se utiliza para desencriptar información.

Solo se utiliza para encriptar con clave simétrica.

Siempre realiza encriptación de bloques.

Admite varios modos de operación.

Retroalimentación