La copie de code est la suivante:
/ * String Deede (3des) Encryption * /
Importer Java.Security.Security;
import javax.crypto.cipher;
Importer Javax.crypto.SecretKey;
Importer javax.crypto.spec.SecretKeyspec;
IMPORT SUN.MISC.BASE64DECODER;
Import Sun.Misc.Base64Encoder;
classe publique des3 {
Algorithme de chaîne finale statique privée = "Deede";
// des, déséder, Blowfish
// KeyByte est une clé de chiffrement d'une longueur de 24 octets
// SRC est le tampon de données crypté (source)
Public Static String EncryptMode (byte [] keyByte, byte [] src)
{
essayer
{
// générer une clé
SecretKey Desktop = new SecretKeyspec (KeyByte, algorithme);
// cryptage
Cipher c1 = cipher.getInstance (algorithme);
c1.init (cipher.encrypt_mode, Desktop);
// Démarrer le chiffrement
octet [] EncryptedByteArray = C1.Dofinal (SRC);
// Après le fonctionnement du chiffrement, convertir l'octet [] en chaîne 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 ();
}
retourner null;
}
// KeyByte est une clé de chiffrement d'une longueur de 24 octets
// src est le tampon crypté
octet statique public [] decryptmode (byte [] keybyte, string src)
{
essayer {
// générer une clé
SecretKey Desktop = new SecretKeyspec (KeyByte, algorithme);
// décrypter
Cipher c1 = cipher.getInstance (algorithme);
c1.init (cipher.decrypt_mode, Desktop);
// avant le fonctionnement du décryptage
Base64Decoder dec = new Base64DecOder ();
BYTE [] EncryptedByteArray = déc.DecodeBuffer (SRC);
// L'opération de décryptage convertit la chaîne de base64 en octet []
retour C1.Dofinal (EncryptedByteArray);
} catch (java.security.nosuchalgorithmexception e1) {
e1.printStackTrace ();
} Catch (javax.crypto.nosuchpaddingException e2) {
e2.printStackTrace ();
} catch (java.lang.exception e3) {
e3.printStackTrace ();
}
retourner null;
}
// Convertir en chaîne hexadécimale
chaîne statique publique byte2hex (byte [] b) {
String hs = "";
String stmp = "";
pour (int n = 0; n <b.length; n ++) {
stmp = (java.lang.integer.tohexString (b [n] & 0xff));
if (stmp.length () == 1)
HS = HS + "0" + STMP;
autre
HS = HS + STMP;
if (n <b.length - 1)
HS = HS + ":";
}
return hs.toupperase ();
}
public static void Main (String [] args)
{
// Ajouter un nouvel algorithme de sécurité.
Security.AddProvider (new com.sun.crypto.provider.sunjce ());
octet final [] keyBytes = {0x11, 0x22, 0x4f, 0x58, (octet) 0x88, 0x10,
0x40, 0x38, 0x28, 0x25, 0x79, 0x51, (octet) 0xcb, (octet) 0xdd,
0x55, 0x66, 0x77, 0x29, 0x74, (octet) 0x98, 0x30, 0x40, 0x36,
(octet) 0xe2};
String szsrc = "Ceci est un test 3DES. Test";
System.out.println ("stand avant le chiffrement:" + szsrc);
String Encoded = EncryptMode (KeyBytes, szsrc.getBytes ());
System.out.println ("String chiffré:" + codé);
octet [] srcbytes = decryptmode (keyBytes, encodé);
System.out.println ("String décrypté:" + (new String (srcbytes)));
}
}