La chaîne que j'ai testée était le code source jQuery.
Longueur du texte brut: 78082
Après la compression: 26566
Longueur du chiffrement: 54746
Recompression: 41647
-------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ------------
Longueur du mot de passe: 41647
Décompression: 54746
Après décryptage: 26566
Re-décompression: 78082
-------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ------------
Comparaison avec succès
Des nécessite un pot: Sun.Misc.base64DecOder.jar
Test
La copie de code est la suivante:
public static void main (String [] args) lève une exception {
String cont = "";
String cont2 = jm (yjy (cont));
if (cont.equals (cont2)) {
System.out.println ("Comparaison réussie");
}autre{
System.out.println ("Comparaison a échoué");
}
}
public static String yjy (String Content) lève une exception {
System.out.println ("Longueur en clair:" + cont.length ());
// Première compression
cont = ziputil2.compress (suite);
System.out.println ("After Compression:" + cont.length ());
// cryptage pour la première fois
cont = Desutil.encrypt (suite, desutil.pwd_key);
System.out.println ("Longueur de chiffrement:" + cont.length ());
// Deuxième compression
cont = ziputil2.compress (suite);
System.out.println ("Recompress:" + cont.length ());
return cont;
}
public static String JM (String Content) lève une exception {
System.out.println ("-----------------------------");
System.out.println ("Longueur CipherText:" + cont.length ());
// Décompressez la première fois
cont = ziputil2.unCompress (cont);
System.out.println ("Decompress:" + cont.length ());
// décrypter pour la première fois
Cont = Desutil.Decrypt (suite, desutil.pwd_key);
System.out.println ("après décryptage:" + cont.length ());
// la deuxième décompression
cont = ziputil2.unCompress (cont);
System.out.println ("Réextraitement:" + cont.length ());
return cont;
}
Désutil
La copie de code est la suivante:
Importer java.io.ioException;
Importer Java.Security.SeCurère et;
import javax.crypto.cipher;
Importer Javax.crypto.SecretKey;
Importer Javax.crypto.SecretKeyFactory;
Importer javax.crypto.spe.deskeyspec;
importation decoder.base64decoder;
importation decoder.base64encoder;
classe publique Desutil {
chaîne statique finale privée Des = "DES";
Public Final Static String PWD_KEY = "MZTHPWDJM";
public final static string id_key = "mzthidjm";
public static void main (String [] args) lève une exception {
String data = "xkajsdasdk'al; ks'dl; kasl; d";
System.err.println ("Encrypt:" + Encrypt (données, pwd_key));
System.err.println ("Decrypt:" + Decrypt (Encrypt (Data, PWD_KEY), PWD_KEY));
}
/ **
* DESCRIPTION DU CRYPTION BASE SUR LA VALEUR CLÉ
*
* Données @param
* clé @param
* Tableau d'octets de clé de chiffrement
* @retour
* @throws exception
* /
Public Static String Encrypt (Data String Data, String Key) lève l'exception {
Byte [] bt = Encrypt (data.getBytes (), key.getBytes ());
String strs = new Base64Encoder (). Encode (bt);
retour des STR;
}
/ **
* Description décrypte en fonction de la valeur clé
*
* Données @param
* clé @param
* Tableau d'octets de clé de chiffrement
* @retour
* @throws ioexception
* @throws exception
* /
Decrypt de chaîne statique publique (données de chaîne, clé de chaîne) lance ioException,
Exception {
if (data == null)
retourner null;
Base64DECODER DECODER = NOUVEAU BASE64DECODER ();
octet [] buf = decoder.decodeBuffer (données);
octet [] bt = decrypt (buf, key.getBytes ());
return new String (bt);
}
/ **
* DESCRIPTION DU CRYPTION BASE SUR LA VALEUR CLÉ
*
* Données @param
* clé @param
* Tableau d'octets de clé de chiffrement
* @retour
* @throws exception
* /
octet statique privé [] Encrypt (octets [] données, byte [] key) lève une exception {
// générer une source de nombre aléatoire de confiance
SecureRandom sr = new SecureRandom ();
// Créez un objet DeskeySpec à partir des données de clé d'origine
DeskeySpec DKS = new DeskeySpec (clé);
// Créez une usine clé et utilisez-la pour convertir DeskeySpec en un objet SecretKey
SecretKeyFactory KeyFactory = SecretKeyFactory.getInstance (DES);
SecretKey SecureKey = KeyFactory.GenerateSeCret (DKS);
// L'objet Cipher termine en fait l'opération de chiffrement
Cipher Cipher = Cipher.getInstance (DES);
// initialise l'objet de chiffre avec une clé
Cipher.init (cipher.encrypt_mode, SecureKey, SR);
return cipher.dofinal (données);
}
/ **
* Description décrypte en fonction de la valeur clé
*
* Données @param
* clé @param
* Tableau d'octets de clé de chiffrement
* @retour
* @throws exception
* /
Byte statique privé [] Decrypt (octet [] données, octet [] clé) lève une exception {
// générer une source de nombre aléatoire de confiance
SecureRandom sr = new SecureRandom ();
// Créez un objet DeskeySpec à partir des données de clé d'origine
DeskeySpec DKS = new DeskeySpec (clé);
// Créez une usine clé et utilisez-la pour convertir DeskeySpec en un objet SecretKey
SecretKeyFactory KeyFactory = SecretKeyFactory.getInstance (DES);
SecretKey SecureKey = KeyFactory.GenerateSeCret (DKS);
// L'objet Cipher termine en fait l'opération de décryptage
Cipher Cipher = Cipher.getInstance (DES);
// initialise l'objet de chiffre avec une clé
cipher.init (cipher.decrypt_mode, SecureKey, SR);
return cipher.dofinal (données);
}
}
Ziputil2
.
La copie de code est la suivante:
Importer java.io.ByteArrayInputStream;
Importer java.io.ByteArrayOutputStream;
Importer java.io.ioException;
Importer java.util.zip.gzipinputStream;
Importer java.util.zip.gzipOutputStream;
// compresse et décompressez une chaîne en mode zip
classe publique Ziputil2 {
// Méthode de test
public static void main (String [] args) lance ioException {
// Test String
String str = "";
System.out.println ("Longueur d'origine:" + str.length ());
System.out.println ("After Compression:" + ziputil2.compress (str) .length ());
Système.
.println ("Decompress:" + Ziputil2.unCompress (ziputil2.compress (str)));
}
// compression
Public Static String Compress (String Str) lève IOException {
if (str == null || str.length () == 0) {
retour STR;
}
ByTearrayOutputStream out = new ByteArrayOutputStream ();
GzipOutputStream gzip = new gzipOutputStream (out);
gzip.write (str.getBytes ());
gzip.close ();
return out.toString ("ISO-8859-1");
}
// décompresser
Public Static String Uncompress (String Str) lève IOException {
if (str == null || str.length () == 0) {
retour STR;
}
ByTearrayOutputStream out = new ByteArrayOutputStream ();
BytearrayInputStream dans = new bytearrayInputStream (
str.getBytes ("ISO-8859-1"));
GzipinputStream gunzip = new gzipinputStream (in);
octet [] tampon = nouveau octet [256];
int n;
while ((n = gunzip.read (tampon))> = 0) {
out.write (tampon, 0, n);
}
// toString () utilise le codage par défaut de la plate-forme et peut également être explicitement spécifié comme Tostring (GBK)
return out.toString ();
}
}