La copia del código es la siguiente:
/*String Desede (3Des) Cifrado*/
import java.security.security;
import javax.crypto.cipher;
import javax.crypto.secretkey;
import javax.crypto.spec.secretkeyspec;
import sun.misc.base64decoder;
import sun.misc.base64Encoder;
Clase pública DES3 {
Algoritmo de cadena final estática privada = "Desede";
// des, desede, pescado de soplado
// keyByte es una clave de cifrado con una longitud de 24 bytes
// src es el búfer de datos cifrado (fuente)
Public static string encryptMode (byte [] keyByte, byte [] src)
{
intentar
{
// Generar clave
SecretKey Desktop = new SecretKeSpec (keyByte, algoritmo);
// cifrado
Cifrado C1 = cifrado .getInstance (algoritmo);
c1.init (cipher.encrypt_mode, escritorio);
// Iniciar cifrado
byte [] encryptedByTearray = c1.dofinal (src);
// Después de la operación de cifrado, convierta el byte [] en la cadena de Base64
Base64Encoder ENC = new Base64Encoder ();
return enc.encode (encryptedByTearray);
}
Catch (java.security.nosuchalgorithmexception e1)
{
e1.printstackTrace ();
}
Catch (javax.crypto.nosuchpaddingexception e2)
{
E2.PrintStackTrace ();
}
Catch (java.lang.Exception E3)
{
E3.PrintStackTrace ();
}
regresar nulo;
}
// keyByte es una clave de cifrado con una longitud de 24 bytes
// src es el búfer cifrado
byte estático público [] DecryptMode (byte [] keyByte, string src)
{
intentar {
// Generar clave
SecretKey Desktop = new SecretKeSpec (keyByte, algoritmo);
// descifrar
Cifrado C1 = cifrado .getInstance (algoritmo);
c1.init (cipher.decrypt_mode, escritorio);
// Antes de la operación de descifrado
Base64Decoder DEC = new Base64Decoder ();
byte [] encryptedByTearray = dec.decodeBuffer (src);
// La operación de descifrado convierte la cadena de base64 en byte []
return c1.dofinal (cifrado en cifrado);
} catch (java.security.nosuchalgorithmexception e1) {
e1.printstackTrace ();
} catch (javax.crypto.nosuchpaddingexception e2) {
E2.PrintStackTrace ();
} catch (java.lang.exception e3) {
E3.PrintStackTrace ();
}
regresar nulo;
}
// Convertir a una cadena hexadecimal
public static string byte2hex (byte [] b) {
Cadena hs = "";
Cadena stmp = "";
para (int n = 0; n <b.length; n ++) {
stmp = (java.lang.integer.tohexstring (b [n] & 0xff));
if (stmp.length () == 1)
HS = HS + "0" + STMP;
demás
HS = HS + STMP;
if (n <b.length - 1)
hs = hs + ":";
}
return hs.ToUpperCase ();
}
Public static void main (String [] args)
{
// Agregar un nuevo algoritmo de seguridad.
Security.AddProvider (nuevo com.sun.crypto.provider.sunjce ());
Byte final [] keyBytes = {0x11, 0x22, 0x4f, 0x58, (byte) 0x88, 0x10,
0x40, 0x38, 0x28, 0x25, 0x79, 0x51, (byte) 0xcb, (byte) 0xdd,
0x55, 0x66, 0x77, 0x29, 0x74, (byte) 0x98, 0x30, 0x40, 0x36,
(byte) 0xe2};
Cadena szsrc = "Esta es una prueba 3DES. Test";
System.out.println ("Stand antes del cifrado:" + SZSRC);
Cadena encoded = cifryptmode (keyBytes, szsrc.getBytes ());
System.out.println ("Cadena cifrada:" + encoded);
byte [] srcbytes = DecryptMode (keyBytes, codificado);
System.out.println ("String descifrado:" + (nueva cadena (srcbytes)));
}
}