grado.sti.cifrador
Class CifradorDES

java.lang.Object
  extended by grado.sti.cifrador.CifradorDES

public class CifradorDES
extends java.lang.Object

Clase que implementa un Cifrador DES empleando el Proveedor Criptográfico SunJCE incluído a partir de la versión Java SDK 1.6. Tras instanciar la clase, se debe invocar al método inicializar() con el modo de operación deseado (modo cifrar o modo descifrar). Posteriormente podrá invocarse al método operarModoCBC para los datos concretos.

Author:
Jorge López Hernández-Ardieta

Field Summary
static int MODO_CIFRADO
          Modo de operación del cifrador en cifrado
static int MODO_DESCIFRADO
          Modo de operación del cifrador en descifrado
 
Constructor Summary
CifradorDES()
          Instancia el Cifrador DES en modo CBC.
 
Method Summary
 byte[] getIV()
          Método que devuelve el vector de inicialización IV empleado.
 void inicializar(int modo)
          Método que inicializa el cifrador DES-CBC para operar en el modo indicado.
 byte[] operarModoCBC(byte[] datos)
          Metodo que cifra o descifra (en base al modo de inicialización del cifrador) todo un array de bytes segun el modo CBC, y utilizando la clave simétrica interna y el vector IV generado también internamente.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

MODO_CIFRADO

public static final int MODO_CIFRADO
Modo de operación del cifrador en cifrado

See Also:
Constant Field Values

MODO_DESCIFRADO

public static final int MODO_DESCIFRADO
Modo de operación del cifrador en descifrado

See Also:
Constant Field Values
Constructor Detail

CifradorDES

public CifradorDES()
            throws java.security.NoSuchAlgorithmException,
                   javax.crypto.NoSuchPaddingException
Instancia el Cifrador DES en modo CBC. No aplica un padding interno, por lo que la clase que utilice este cifrador deberá asegurarse que posteriormente se invoca al método operarModoCBC con un conjunto de datos múltiplo de 8 bytes (64 bits).

La clave simétrica empleada es interna al cifrador.

El vector de inicialización se generará internamente. Se puede recuperar invocando al método getIV(), aunque sólo es necesario cuando se requiera operar en modo descifrado con el mismo vector de inicialización.

Throws:
java.security.NoSuchAlgorithmException
javax.crypto.NoSuchPaddingException
Method Detail

inicializar

public void inicializar(int modo)
                 throws java.lang.Exception
Método que inicializa el cifrador DES-CBC para operar en el modo indicado.

La clave empleada es interna al cifrador, así como el vector IV utilizado.

Parameters:
modo - Modo de operación (CifradorDES.MODO_CIFRADO ó CifradorDES.MODO_DESCIFRADO)
Throws:
java.lang.Exception

operarModoCBC

public byte[] operarModoCBC(byte[] datos)
                     throws java.lang.Exception
Metodo que cifra o descifra (en base al modo de inicialización del cifrador) todo un array de bytes segun el modo CBC, y utilizando la clave simétrica interna y el vector IV generado también internamente.

Parameters:
datos - Array de bytes a cifrar/descifrar
Returns:
Resultado del cifrado/descifrado
Throws:
java.lang.Exception

getIV

public byte[] getIV()
Método que devuelve el vector de inicialización IV empleado.

Returns:
Vector de Inicialización IV