String yang saya uji adalah kode sumber jQuery.
Panjang teks biasa: 78082
Setelah kompresi: 26566
Panjang enkripsi: 54746
Rekompresi: 41647
-------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ------------
Panjang Kata Sandi: 41647
Dekompresi: 54746
Setelah dekripsi: 26566
Dekompresi ulang: 78082
-------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ------------
Perbandingan berhasil
DES Membutuhkan Jar: sun.misc.base64decoder.jar
Tes
Salinan kode adalah sebagai berikut:
public static void main (string [] args) melempar pengecualian {
String cont = "";
String cont2 = jm (yjy (cont));
if (cont.equals (cont2)) {
System.out.println ("Perbandingan Sukses");
}kalau tidak{
System.out.println ("Perbandingan Gagal");
}
}
string statis publik yjy (konten string) melempar pengecualian {
System.out.println ("Panjang Plaintext:" + cont.length ());
// kompresi pertama
cont = ziputil2.compress (cont);
System.out.println ("Setelah kompresi:" + cont.length ());
// enkripsi pertama kali
cont = desutil.encrypt (cont, desutil.pwd_key);
System.out.println ("Panjang enkripsi:" + cont.length ());
// kompresi kedua
cont = ziputil2.compress (cont);
System.out.println ("Recovpress:" + cont.length ());
return cont;
}
String statis public JM (konten string) melempar Exception {
System.out.println ("-----------------------------");
System.out.println ("Ciphertext Length:" + cont.length ());
// dekompresi pertama kali
cont = ziputil2.unkompres (cont);
System.out.println ("Decompress:" + cont.length ());
// dekripsi untuk pertama kalinya
cont = desutil.decrypt (cont, desutil.pwd_key);
System.out.println ("Setelah dekripsi:" + cont.length ());
// dekompresi kedua
cont = ziputil2.unkompres (cont);
System.out.println ("Ekstraksi ulang:" + cont.length ());
return cont;
}
Desutil
Salinan kode adalah sebagai berikut:
impor java.io.ioException;
impor java.security.securerandom;
impor javax.crypto.cipher;
impor javax.crypto.secretkey;
impor javax.crypto.secretkeyfactory;
impor javax.crypto.spec.deskeyspec;
impor decoder.base64decoder;
impor decoder.base64encoder;
Kelas Publik Desutil {
string statis final private des = "des";
string statis akhir publik pwd_key = "mzthpwdjm";
string statis final publik id_key = "mzthidjm";
public static void main (string [] args) melempar pengecualian {
String data = "xkajsdasdk'al; ks'dl; kasl; d";
System.err.println ("Encrypt:"+Encrypt (Data, PWD_KEY));
System.err.println ("Decrypt:" +Decrypt (Encrypt (Data, PWD_KEY), PWD_KEY));
}
/**
* Deskripsi enkripsi berdasarkan nilai kunci
*
* @param data
* Kunci @param
* Array Byte Kunci Enkripsi
* @kembali
* @Throws Exception
*/
Encrypt string statis publik (data string, tombol string) melempar Exception {
byte [] bt = encrypt (data.getbytes (), key.getBytes ());
String strs = base64encoder baru (). Encode (bt);
mengembalikan strs;
}
/**
* Deskripsi dekripsi sesuai dengan nilai kunci
*
* @param data
* Kunci @param
* Array Byte Kunci Enkripsi
* @kembali
* @Throws IoException
* @Throws Exception
*/
Dekripsi String Statis Publik (Data String, Kunci String) Melempar IoException,
Pengecualian {
if (data == null)
kembali nol;
Base64decoder decoder = base64decoder baru ();
byte [] buf = decoder.decodebuffer (data);
byte [] bt = decrypt (buf, key.getbytes ());
return new string (bt);
}
/**
* Deskripsi enkripsi berdasarkan nilai kunci
*
* @param data
* Kunci @param
* Array Byte Kunci Enkripsi
* @kembali
* @Throws Exception
*/
Private Static Byte [] Encrypt (byte [] data, byte []) melempar Exception {
// menghasilkan sumber angka acak tepercaya
Securerandom Sr = new SecureRandom ();
// Buat objek deskeyspec dari data kunci asli
Deskeyspec dks = deskeyspec baru (kunci);
// Buat pabrik utama dan gunakan untuk mengonversi deskeyspec menjadi objek Secretkey
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance (DES);
Secretkey SecureKey = KeyFactory.GenerateSecret (DKS);
// Objek Cipher sebenarnya menyelesaikan operasi enkripsi
Cipher cipher = cipher.getInstance (des);
// inisialisasi objek cipher dengan kunci
cipher.init (cipher.encrypt_mode, SecureKey, sr);
return cipher.dofinal (data);
}
/**
* Deskripsi dekripsi sesuai dengan nilai kunci
*
* @param data
* Kunci @param
* Array Byte Kunci Enkripsi
* @kembali
* @Throws Exception
*/
byte statis pribadi [] decrypt (data byte [], tombol byte []) melempar pengecualian {
// menghasilkan sumber angka acak tepercaya
Securerandom Sr = new SecureRandom ();
// Buat objek deskeyspec dari data kunci asli
Deskeyspec dks = deskeyspec baru (kunci);
// Buat pabrik utama dan gunakan untuk mengonversi deskeyspec menjadi objek Secretkey
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance (DES);
Secretkey SecureKey = KeyFactory.GenerateSecret (DKS);
// Objek Cipher sebenarnya menyelesaikan operasi dekripsi
Cipher cipher = cipher.getInstance (des);
// inisialisasi objek cipher dengan kunci
cipher.init (cipher.decrypt_mode, SecureKey, sr);
return cipher.dofinal (data);
}
}
Ziputil2
.
Salinan kode adalah sebagai berikut:
impor java.io.bytearrayInputStream;
impor java.io.bytearrayoutputStream;
impor java.io.ioException;
impor java.util.zip.gzipinputStream;
impor java.util.zip.gzipoutputStream;
// kompres dan mendekompres string dalam mode zip
kelas publik ziputil2 {
// Metode uji
public static void main (string [] args) melempar ioException {
// uji string
String str = "";
System.out.println ("Panjang Asli:" + str.length ());
System.out.println ("Setelah kompresi:" + ziputil2.compress (str) .length ());
System.out
.println ("Decompress:" + Ziputil2.unkompress (ziputil2.compress (str))));
}
// kompresi
Public Static String Compress (String str) melempar ioException {
if (str == null || str.length () == 0) {
mengembalikan str;
}
BytearrayoutputStream out = bytearrayoutputStream () baru;
GzipoutputStream gzip = gzipoutputStream baru (out);
gzip.write (str.getbytes ());
gzip.close ();
Return out.tostring ("ISO-8859-1");
}
// dekompresi
Public Static String Uncompress (String Str) melempar IoException {
if (str == null || str.length () == 0) {
mengembalikan str;
}
BytearrayoutputStream out = bytearrayoutputStream () baru;
BytearrayInputStream in = new bytearrayInputStream (
str.getbytes ("iso-8859-1"));
GzipInputStream gunzip = GzipInputStream baru (IN);
byte [] buffer = byte baru [256];
int n;
while ((n = gunzip.read (buffer))> = 0) {
out.write (buffer, 0, n);
}
// tostring () menggunakan penyandian default platform, dan juga dapat ditentukan secara eksplisit seperti ToString (GBK)
return out.tostring ();
}
}