A cópia do código é a seguinte:
/*String desede (3DES) Criptografia*/
importar java.security.security;
importar javax.crypto.cipher;
importar javax.crypto.secretkey;
importar javax.crypto.spec.secretkeyspec;
importar sun.misc.base64decoder;
importar sun.misc.base64Encoder;
classe pública des3 {
algoritmo de sequência final estática privada = "desede";
// DES, DESED, BLOWFISH
// keybyte é uma chave de criptografia com um comprimento de 24 bytes
// src é o buffer de dados criptografado (fonte)
public static string criptyptmode (byte [] keybyte, byte [] src)
{
tentar
{
// Gere a chave
SecretKey Desktop = New SecretKeyspec (Keybyte, algoritmo);
// criptografia
Cifra c1 = cipher.getInstance (algoritmo);
c1.init (cipher.encrypt_mode, desktop);
// Iniciar a criptografia
byte [] EncryptedByTearray = C1.Dofinal (SRC);
// Após a operação de criptografia, converta byte [] em string da base64
Base64Encoder ENC = new Base64Encoder ();
retornar Enc.Encode (EncryptedByTearray);
}
Catch (java.security.nosuchalgorithMexception e1)
{
e1.printStackTrace ();
}
Catch (javax.crypto.nosuchpaddingException e2)
{
e2.PrintStackTrace ();
}
captura (java.lang.Exception e3)
{
e3.PrintStackTrace ();
}
retornar nulo;
}
// keybyte é uma chave de criptografia com um comprimento de 24 bytes
// src é o buffer criptografado
Byte estático público [] DecryptMode (byte [] keybyte, string src)
{
tentar {
// Gere a chave
SecretKey Desktop = New SecretKeyspec (Keybyte, algoritmo);
// descriptografar
Cifra c1 = cipher.getInstance (algoritmo);
c1.init (cipher.decrypt_mode, desktop);
// antes da operação de descriptografia
Base64decoder DEC = new Base64Decoder ();
byte [] EncryptedByTearray = DEC.DecodeBuffer (SRC);
// Operação de descriptografia converte a sequência de base64 em byte []
retornar C1.Dofinal (EncryptedByTearray);
} catch (java.security.nosuchalgorithMexception e1) {
e1.printStackTrace ();
} catch (javax.crypto.nosuchpaddingingException e2) {
e2.PrintStackTrace ();
} catch (java.lang.Exception e3) {
e3.PrintStackTrace ();
}
retornar nulo;
}
// converter em sequência hexadecimal
public static string byte2hex (byte [] b) {
String hs = "";
String stmp = "";
for (int n = 0; n <b.length; n ++) {
stmp = (java.lang.integer.tohexstring (b [n] e 0xff));
if (stmp.length () == 1)
hs = hs + "0" + stmp;
outro
hs = hs + stmp;
if (n <b.length - 1)
hs = hs + ":";
}
retornar hs.ToupPercase ();
}
public static void main (string [] args)
{
// Adicione um novo algoritmo de segurança.
Security.addProvider (novo com.sun.crypto.provider.sunjce ());
Final byte [] 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};
String szsrc = "Este é um teste 3DES. Teste";
System.out.println ("Stand antes da criptografia:" + szsrc);
String coded = EncryptMode (KeyBytes, szsrc.getbytes ());
System.out.println ("String criptografada:" + codificada);
byte [] srcbytes = decryptMode (keybytes, codificado);
System.out.println ("String descriptografada:" + (new String (srcbytes)));
}
}