La cadena que probé fue el código fuente jQuery.
Longitud del texto plano: 78082
Después de la compresión: 26566
Longitud de cifrado: 54746
Recompresión: 41647
-------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ------------
Longitud de la contraseña: 41647
Descompresión: 54746
Después del descifrado: 26566
Redecompresión: 78082
-------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ------------
Comparación con éxito
Des requiere frasco: sun.misc.base64decoder.jar
Prueba
La copia del código es la siguiente:
public static void main (string [] args) lanza la excepción {
Cadena cont = "";
Cadena cont2 = jm (yjy (cont));
if (cont.equals (cont2)) {
System.out.println ("Comparación exitosa");
}demás{
System.out.println ("Comparación fallida");
}
}
public static string yjy (string content) lanza la excepción {
System.out.println ("Longitud de texto sin formato:" + cont.length ());
// Primera compresión
cont = ziputil2.compress (cont);
System.out.println ("Después de la compresión:" + cont.length ());
// cifrado por primera vez
cont = desutil.Encrypt (cont, desutil.pwd_key);
System.out.println ("Longitud de cifrado:" + cont.length ());
// Segunda compresión
cont = ziputil2.compress (cont);
System.out.println ("Recompress:" + cont.length ());
regresar cont;
}
public static String JM (String Content) lanza la excepción {
System.out.println ("-----------------------------");
System.out.println ("Longitud de texto cifrado:" + cont.length ());
// descomprime la primera vez
cont = ziputil2.Uncompress (cont);
System.out.println ("Decompress:" + cont.length ());
// descifrar por primera vez
cont = desutil.Decrypt (cont, desutil.pwd_key);
System.out.println ("Después del descifrado:" + cont.length ());
// La segunda descompresión
cont = ziputil2.Uncompress (cont);
System.out.println ("Reextract:" + cont.length ());
regresar cont;
}
Desutilo
La copia del código es la siguiente:
import java.io.ioException;
import java.security.secureurandom;
import javax.crypto.cipher;
import javax.crypto.secretkey;
import javax.crypto.secretkeyFactory;
import javax.crypto.spec.deskeyspec;
importar decoder.base64Decoder;
importación decoder.base64Encoder;
clase pública desutil {
Cadena estática final privada des = "des";
Cadena estática final pública pwd_key = "mzthpwdjm";
Public final static string id_key = "mzthidjm";
public static void main (string [] args) lanza la excepción {
String data = "xkaajsdasdk'al; ks'dl; kasl; d";
System.err.println ("CiCrypt:"+CiCrypt (data, pwd_key));
System.err.println ("Decrypt:" +Decrypt (CiCrypt (Data, PWD_KEY), PWD_KEY));
}
/**
* Cifrado de descripción basado en el valor clave
*
* @param datos
* @Param Key
* Matriz de bytes clave de cifrado
* @devolver
* @@throws Exception
*/
public static string encrypt (datos de cadena, tecla de cadena) lanza la excepción {
byte [] bt = encrypt (data.getBytes (), key.getBytes ());
Cadena strs = new Base64Encoder (). ENCODE (BT);
devolver STRS;
}
/**
* Descripción descifra según el valor clave
*
* @param datos
* @Param Key
* Matriz de bytes clave de cifrado
* @devolver
* @throws ioexception
* @@throws Exception
*/
public static String Decrypt (Datos de cadena, tecla de cadena) lanza IoException,
Excepción {
if (data == null)
regresar nulo;
Base64Decoder decoder = new Base64Decoder ();
byte [] buf = decoder.decodeBuffer (datos);
byte [] bt = Decrypt (buf, key.getBytes ());
devolver nueva cadena (BT);
}
/**
* Cifrado de descripción basado en el valor clave
*
* @param datos
* @Param Key
* Matriz de bytes clave de cifrado
* @devolver
* @@throws Exception
*/
byte static privado [] cifrado (byte [] datos, byte [] key) arroja excepción {
// Generar una fuente de número aleatorio de confianza
Securerandom sr = new SecureRandom ();
// Crear un objeto DeskeySPEC a partir de los datos clave originales
Deskeyspec dks = new DesKEYSPEC (clave);
// Cree una fábrica clave y úsela para convertir DeskeysPec en un objeto SecretKey
SecretKeyFactory KeyFactory = SecretKeyFactory.getInstance (des);
SecretKey SecureKey = KeyFactory.GeneratesECret (DKS);
// El objeto CIPHER realmente completa la operación de cifrado
Cifrado cifrado = cifrado.getInstance (des);
// Inicializar el objeto de cifrado con una clave
cipher.init (cipher.encrypt_mode, securekey, sr);
return cipher.dofinal (datos);
}
/**
* Descripción descifra según el valor clave
*
* @param datos
* @Param Key
* Matriz de bytes clave de cifrado
* @devolver
* @@throws Exception
*/
byte estático privado [] Decrypt (byte [] datos, byte [] key) lanza excepción {
// Generar una fuente de número aleatorio de confianza
Securerandom sr = new SecureRandom ();
// Crear un objeto DeskeySPEC a partir de los datos clave originales
Deskeyspec dks = new DesKEYSPEC (clave);
// Cree una fábrica clave y úsela para convertir DeskeysPec en un objeto SecretKey
SecretKeyFactory KeyFactory = SecretKeyFactory.getInstance (des);
SecretKey SecureKey = KeyFactory.GeneratesECret (DKS);
// El objeto CIPHER realmente completa la operación de descifrado
Cifrado cifrado = cifrado.getInstance (des);
// Inicializar el objeto de cifrado con una clave
cipher.init (cipher.decrypt_mode, securekey, sr);
return cipher.dofinal (datos);
}
}
Ziputil2
.
La copia del código es la siguiente:
import java.io.bytearrayInputStream;
import java.io.bytearrayOutputStream;
import java.io.ioException;
import java.util.zip.gzipinputstream;
import java.util.zip.gzipoutputstream;
// comprimir y descomprimir una cadena en modo zip
clase pública Ziputil2 {
// Método de prueba
public static void main (string [] args) lanza ioexception {
// Cadena de prueba
Cadena str = "";
System.out.println ("Longitud original:" + str.length ());
System.out.println ("Después de la compresión:" + ziputil2.compress (str) .length ());
System.Out
.println ("Decompress:" + Ziputil2.Uncompress (ziputil2.compress (str))));
}
// compresión
Public static string compress (string str) lanza ioexception {
if (str == null || str.length () == 0) {
regresar str;
}
ByteArRayOutputStream out = new byteArRaRyOutputStream ();
GzipoutputStream gzip = new GzipoutputStream (Out);
gzip.write (str.getbytes ());
gzip.close ();
return out.ToString ("ISO-8859-1");
}
// descomprimir
public static string uncompress (string str) lanza ioexception {
if (str == null || str.length () == 0) {
regresar str;
}
ByteArRayOutputStream out = new byteArRaRyOutputStream ();
BytearrayInputStream in = new bytearrayInputStream (
str.getBytes ("ISO-8859-1"));
Gzipinputstream gunzip = nuevo gzipinputstream (in);
byte [] buffer = new Byte [256];
int n;
while ((n = gunzip.read (buffer))> = 0) {
out.write (buffer, 0, n);
}
// toString () utiliza la codificación predeterminada de la plataforma, y también se puede especificar explícitamente, como ToString (GBK)
return out.ToString ();
}
}