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 cifradorCipher
. - Mediante el método
init()
se indicará el modo de operación del objetoCipher
, por ejemplo encriptar o desencriptar. - Mediante los métodos
update()
ydoFinall()
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 conWRAP_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.
- Se utiliza el algoritmo
- 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.