A string que testei foi o código -fonte jQuery.
Comprimento do texto simples: 78082
Após a compressão: 26566
Comprimento da criptografia: 54746
Recompressão: 41647
-------------------------------------------------------- -------------------------------------------------------- -------------------------------------------------------- -------------------------------------------------------- -------------------------------------------------------- -------------------------------------------------------- -------------------------------------------------------- -------------------------------------------------------- -------------------------------------------------------- -------------------------------------------------------- ------------
Comprimento da senha: 41647
Descompressão: 54746
Após descriptografia: 26566
Re-decompressão: 78082
-------------------------------------------------------- -------------------------------------------------------- -------------------------------------------------------- -------------------------------------------------------- -------------------------------------------------------- -------------------------------------------------------- -------------------------------------------------------- -------------------------------------------------------- -------------------------------------------------------- -------------------------------------------------------- ------------
Comparação com sucesso
Des requer jar: Sun.misc.base64decoder.jar
Teste
A cópia do código é a seguinte:
public static void main (string [] args) lança exceção {
String cont = "";
String cont2 = jm (yjy (cont));
if (cont.equals (cont2)) {
System.out.println ("comparação bem -sucedida");
}outro{
System.out.println ("Comparação falhou");
}
}
public static string yjy (conteúdo de string) lança exceção {
System.out.println ("Comprimento do texto simples:" + cont.Length ());
// Primeira compactação
cont = ziputil2.comPress (cont);
System.out.println ("Após a compactação:" + cont.Length ());
// criptografia pela primeira vez
cont = DESUTIL.ENCRYPT (CONT, DESUTIL.PWD_KEY);
System.out.println ("Comprimento da criptografia:" + cont.Length ());
// Segunda compressão
cont = ziputil2.comPress (cont);
System.out.println ("Recompress:" + cont.Length ());
retorno cont;
}
public static string jm (conteúdo da string) lança a exceção {
System.out.println ("---------------------------");
System.out.println ("Comprimento da CipherText:" + cont.Length ());
// descompacte a primeira vez
cont = ziputil2.uncompress (cont);
System.out.println ("descompacte:" + cont.Length ());
// descriptografar pela primeira vez
cont = DESUTIL.DECRYPT (CONT, DESUTIL.PWD_KEY);
System.out.println ("Após a descriptografia:" + cont.Length ());
// a segunda descompressão
cont = ziputil2.uncompress (cont);
System.out.println ("reextract:" + cont.Length ());
retorno cont;
}
Desutil
A cópia do código é a seguinte:
importar java.io.ioException;
importar java.Security.SecureRandom;
importar javax.crypto.cipher;
importar javax.crypto.secretkey;
importar javax.crypto.secretKeyFactory;
importar javax.crypto.spec.deskeyspec;
importar decodificador.base64decoder;
importar decodificador.base64Encoder;
classe pública Desutil {
String estática final privada des = "DES";
public final Static String pwd_key = "mzthpwdjm";
public final Static String id_key = "mzthidjm";
public static void main (string [] args) lança exceção {
String data = "xkajsdasdk'al; ks'dl; kasl; d";
System.err.println ("Encrypt:"+Encrypt (dados, pwd_key));
System.err.println ("descriptografar:" +descriptografar (Encrypt (dados, pwd_key), pwd_key));
}
/**
* Descrição Criptografia com base no valor da chave
*
* Dados @param
* @param chave
* Array de byte de chave de criptografia
* @retornar
* @Throws Exception
*/
public static string criprypt (dados da string, chave de string) lança a exceção {
byte [] Bt = Encrypt (data.getBytes (), key.getBytes ());
String strs = new base64Encoder (). Encode (bt);
retornar strs;
}
/**
* Descrição descriptografa de acordo com o valor -chave
*
* Dados @param
* @param chave
* Array de byte de chave de criptografia
* @retornar
* @THOWSows IoException
* @Throws Exception
*/
public static string descripto (dados de string, chave de string) lança ioexception,
Exceção {
if (dados == null)
retornar nulo;
Base64decoder decodificador = new base64decoder ();
byte [] BUF = decodificador.DecodeBuffer (Data);
byte [] bt = descriptografar (buf, key.getBytes ());
retornar nova string (BT);
}
/**
* Descrição Criptografia com base no valor da chave
*
* Dados @param
* @param chave
* Array de byte de chave de criptografia
* @retornar
* @Throws Exception
*/
byte estático privado [] Encrypt (byte [] dados, byte [] key) lança exceção {
// gerar uma fonte de números aleatórios confiáveis
SecureRandom SR = new SecureRandom ();
// Crie um objeto Deskeyspec a partir dos dados principais originais
Deskeyspec DKS = new Deskeyspec (chave);
// Crie uma fábrica importante e use -a para converter o deskeyspec em um objeto SecretKey
SecretKeyFactory KeyFactory = secretKeyFactory.GetInstance (DES);
SecretKey SecureKey = keyFactory.GenerateSecret (DKS);
// O objeto cifra realmente completa a operação de criptografia
Cifra cifra = cipher.getInstance (DES);
// inicialize o objeto cifra com uma chave
cipher.init (cipher.encrypt_mode, secureKey, sr);
return cipher.dofinal (dados);
}
/**
* Descrição descriptografa de acordo com o valor -chave
*
* Dados @param
* @param chave
* Array de byte de chave de criptografia
* @retornar
* @Throws Exception
*/
byte estático privado [] descriptografar (byte [] dados, byte [] key) lança exceção {
// gerar uma fonte de números aleatórios confiáveis
SecureRandom SR = new SecureRandom ();
// Crie um objeto Deskeyspec a partir dos dados principais originais
Deskeyspec DKS = new Deskeyspec (chave);
// Crie uma fábrica importante e use -a para converter o deskeyspec em um objeto SecretKey
SecretKeyFactory KeyFactory = secretKeyFactory.GetInstance (DES);
SecretKey SecureKey = keyFactory.GenerateSecret (DKS);
// O objeto cifra realmente completa a operação de descriptografia
Cifra cifra = cipher.getInstance (DES);
// inicialize o objeto cifra com uma chave
cipher.init (cipher.decrypt_mode, secureKey, sr);
return cipher.dofinal (dados);
}
}
Ziputil2
.
A cópia do código é a seguinte:
importar java.io.byteArrayInputStream;
importar java.io.byteArrayOutputStream;
importar java.io.ioException;
importar java.util.zip.gzipinputStream;
importar java.util.zip.gzipOutputStream;
// compactar e descomprimir uma string no modo ZIP
classe pública ziputil2 {
// Método de teste
public static void main (string [] args) lança ioexception {
// String de teste
String str = "";
System.out.println ("Comprimento original:" + str.Length ());
System.out.println ("Após a compactação:" + ziputil2.comPress (str) .Length ());
System.out
.println ("descompacte:" + ziputil2.uncompress (ziputil2.comPress (str)));
}
// compressão
public static string compact (string str) lança ioexception {
if (str == null || str.Length () == 0) {
retornar str;
}
ByteArrayOutputStream Out = new ByteArrayOutputStream ();
GzipOutputStream gzip = new GzipOutputStream (out);
gzip.write (str.getBytes ());
gzip.close ();
return Out.ToString ("ISO-8859-1");
}
// descompacte
public static string descripten (string str) lança ioexception {
if (str == null || str.Length () == 0) {
retornar str;
}
ByteArrayOutputStream Out = new ByteArrayOutputStream ();
ByteArrayInputStream in = new ByteArrayInputStream (
str.getBytes ("ISO-8859-1"));
Gzipinputstream gunzip = new GzipinputStream (in);
byte [] buffer = novo byte [256];
int n;
while ((n = gunzip.read (buffer))> = 0) {
out.write (buffer, 0, n);
}
// tostring () usa a codificação padrão da plataforma e também pode ser explicitamente especificado, como a ToString (GBK)
return Out.ToString ();
}
}