Documentos de Académico
Documentos de Profesional
Documentos de Cultura
SEGURIDAD
INFORMATICA
Cifrado DES
Integrantes:
CESAR ESTEBAN CANUL MUKUL
JESSICA NATIVIDAD ZIMA TUN
GILMER EFRAIN PUC MANDUJANO
DES
(Data Encryption Standard)
DES (Data Encryption Standard, estndar de cifrado de
datos) es un algoritmo desarrollado originalmente por
IBM a requerimiento del NBS (National Bureau of
Standards, Oficina Nacional de Estandarizacin, en la
actualidad denominado NIST, National Institute of
Standards and Technology, Instituto Nacional de
Estandarizacin y Tecnologa) de
EE.UU. y posteriormente modificado y adoptado por el
gobierno de EE.UU. en 1977 como estndar de cifrado de
todas las informaciones sensibles no clasificadas.
Posteriormente, en 1980, el NIST estandariz los
diferentes modos de operacin del algoritmo. Es el ms
estudiado y utilizado de los algoritmos de clave simtrica.
El nombre original del algoritmo, tal como lo denomin
IBM, era Lucifer. Trabajaba sobre bloques de 128 bits,
teniendo la clave igual longitud. Se basaba en
operaciones lgicas booleanas y poda ser implementado
fcilmente, tanto en software como en hardware.
Tras las modificaciones introducidas por el NBS,
consistentes bsicamente en la reduccin de la longitud
de clave y de los bloques, DES cifra bloques de 64 bits,
mediante permutacin y sustitucin y usando una clave
de 64 bits, de los que 8 son de paridad (esto es, en
realidad usa 56 bits), produciendo as 64 bits cifrados.
java.io.UnsupportedEncodingException;
java.security.InvalidKeyException;
java.security.NoSuchAlgorithmException;
java.security.spec.*;
javax.crypto.*;
javax.crypto.spec.DESKeySpec;
/**
* @author JF
* Esta clase Encripta una cadena y luego la convierte a Base64
*/
public class ClaseDESBase64 {
Cipher encrypt;
Cipher decrypt;
SecretKey key;
String keyTxt;
public ClaseDESBase64(String clave){
keyTxt = clave;
try{
encrypt = Cipher.getInstance("DES");
decrypt = Cipher.getInstance("DES");
if(keyTxt.equals("")){
SecretKey key = KeyGenerator.getInstance("DES").generateKey();//Genera
Clave automtica
encrypt.init(Cipher.ENCRYPT_MODE, key);//Con clave aleatoria
decrypt.init(Cipher.DECRYPT_MODE, key);//Con clave aleatoria
}else{
KeySpec ks = new DESKeySpec(keyTxt.getBytes("UTF8"));
SecretKeyFactory kf = SecretKeyFactory.getInstance("DES");
SecretKey ky = kf.generateSecret(ks);
encrypt.init(Cipher.ENCRYPT_MODE, ky);
decrypt.init(Cipher.DECRYPT_MODE, ky);
}
}catch(InvalidKeySpecException ex){
}catch(UnsupportedEncodingException ex){
}catch(InvalidKeyException ex){
}catch(NoSuchAlgorithmException ex){
}catch(NoSuchPaddingException ex){
}
}
public String encriptar(String str){ //Metodo para Desencriptar
try {
// Encode the string into bytes using utf-8
byte[] utf8 = str.getBytes("UTF8");
// Encrypt
byte[] enc = encrypt.doFinal(utf8);
// Encode bytes to base64 to get a string
return new sun.misc.BASE64Encoder().encode(enc);
catch (javax.crypto.BadPaddingException e) {
catch (IllegalBlockSizeException e) {
catch (UnsupportedEncodingException e) {
catch (java.io.IOException e) {
}
}
}
}
}
return null;
}
}
}
}
}
return null;
}
TEXTO ENCRIPTADO Y
DESENCRIPTADO
TEXTO A CIFRAR = TEXTO CIFRADO CON
DES TTT
TEXTO CIFRADO =
4QmHlJE8R8d5Zlf7BZUhvgxn40LWuqbsvk+
si0pbPIU=