내가 테스트 한 문자열은 jQuery 소스 코드였습니다.
일반 텍스트 길이 : 78082
압축 후 : 26566
암호화 길이 : 54746
재 운동 : 41647
----------------------------------------------------------- ----------------------------------------------------------- ----------------------------------------------------------- ----------------------------------------------------------- ----------------------------------------------------------- ----------------------------------------------------------- ----------------------------------------------------------- ----------------------------------------------------------- ----------------------------------------------------------- ----------------------------------------------------------- ------------
비밀번호 길이 : 41647
감압 : 54746
암호 해독 후 : 26566
재 응축 : 78082
----------------------------------------------------------- ----------------------------------------------------------- ----------------------------------------------------------- ----------------------------------------------------------- ----------------------------------------------------------- ----------------------------------------------------------- ----------------------------------------------------------- ----------------------------------------------------------- ----------------------------------------------------------- ----------------------------------------------------------- ------------
성공적으로 비교
Des는 Jar : Sun.misc.base64decoder.jar를 필요로합니다
시험
코드 사본은 다음과 같습니다.
public static void main (string [] args)은 예외 {
문자열 cont = "";
문자열 cont2 = jm (yjy (cont));
if (cont.equals (cont2)) {
System.out.println ( "비교 성공");
}또 다른{
System.out.println ( "비교 실패");
}
}
public static string yjy (문자열 내용)는 예외 {{
System.out.println ( "일반 텍스트 길이 :" + cont.length ());
// 첫 번째 압축
cont = ziputil2.compress (cont);
System.out.println ( "압축 후 :" + cont.length ());
// 처음 암호화
cont = desutil.encrypt (cont, desutil.pwd_key);
System.out.println ( "암호화 길이 :" + cont.length ());
// 두 번째 압축
cont = ziputil2.compress (cont);
System.out.println ( "Remompress :" + cont.length ());
반환 계속;
}
public static string jm (문자열 컨텐츠) 예외 {
System.out.println ( "---------------------------------------------------
System.out.println ( "암호 텍스트 길이 :" + cont.length ());
// 처음으로 압축을 압축합니다
cont = ziputil2.uncompress (cont);
System.out.println ( "Decompress :" + cont.length ());
// 처음으로 해독합니다
cont = desutil.decrypt (cont, desutil.pwd_key);
System.out.println ( "암호 해독 후 :" + cont.length ());
// 두 번째 감압
cont = ziputil2.uncompress (cont);
System.out.println ( "재 추출 :" + cont.length ());
반환 계속;
}
desutil
코드 사본은 다음과 같습니다.
import java.io.ioexception;
java.security.securerandom import;
javax.crypto.cipher 가져 오기;
javax.crypto.secretkey import;
javax.crypto.secretkeyfactory import;
javax.crypto.spec.deskeyspec import;
import decoder.base64decoder;
import decoder.base64encoder;
공공 계급 desutil {
개인 최종 정적 문자열 des = "des";
공개 최종 정적 문자열 pwd_key = "mzthpwdjm";
공개 최종 정적 문자열 id_key = "mzthidjm";
public static void main (string [] args)은 예외 {
문자열 data = "xkajsdasdk'al; ks'dl; kasl; d";
System.err.println ( "암호화 :"+encrypt (data, pwd_key));
System.err.println ( "decrypt :" +decrypt (암호화 (data, pwd_key), pwd_key));
}
/**
* 설명 키 값에 따른 암호화
*
* @param 데이터
* @param 키
* 암호화 키 바이트 배열
* @반품
* @throws 예외
*/
public static string alcrypt (문자열 데이터, 문자열 키)는 예외 {{
바이트 [] bt = encrypt (data.getBytes (), key.getBytes ());
문자열 strs = 새로운 base64encoder (). encode (bt);
Return strs;
}
/**
* 설명 키 값에 따라 해독됩니다
*
* @param 데이터
* @param 키
* 암호화 키 바이트 배열
* @반품
* @throws ioexception
* @throws 예외
*/
public static string decrypt (문자열 데이터, 문자열 키)는 ioexception을 던지고,
예외 {
if (data == null)
널 리턴;
Base64decoder decoder = 새로운 base64decoder ();
바이트 [] buf = decoder.decodebuffer (데이터);
바이트 [] bt = decrypt (buf, key.getBytes ());
새 문자열 (bt)을 반환합니다.
}
/**
* 설명 키 값에 따른 암호화
*
* @param 데이터
* @param 키
* 암호화 키 바이트 배열
* @반품
* @throws 예외
*/
private static byte [] encrypt (byte [] data, byte [] key)는 예외 {
// 신뢰할 수있는 랜덤 번호 소스를 생성합니다
securerandom sr = new securerandom ();
// 원래 키 데이터에서 Deskeyspec 객체 생성
deskeyspec dks = 새로운 Deskeyspec (키);
// 주요 공장을 만들고이를 사용하여 Deskeyspec을 SecretKey 개체로 변환합니다.
SecretKeyFactory keyfactory = SecretKeyFactory.getInstance (DES);
Secretkey SecureKey = keyfactory.generatesEcret (DKS);
// 암호 개체는 실제로 암호화 작업을 완료합니다
암호 암호 = cipher.getinstance (des);
// 키로 암호 개체를 초기화합니다
cipher.init (cipher.encrypt_mode, securekey, sr);
반환 cipher.dofinal (데이터);
}
/**
* 설명 키 값에 따라 해독됩니다
*
* @param 데이터
* @param 키
* 암호화 키 바이트 배열
* @반품
* @throws 예외
*/
private static byte [] decrypt (byte [] data, byte [] key)는 예외 {
// 신뢰할 수있는 랜덤 번호 소스를 생성합니다
securerandom sr = new securerandom ();
// 원래 키 데이터에서 Deskeyspec 객체 생성
deskeyspec dks = 새로운 Deskeyspec (키);
// 주요 공장을 만들고이를 사용하여 Deskeyspec을 SecretKey 개체로 변환합니다.
SecretKeyFactory keyfactory = SecretKeyFactory.getInstance (DES);
Secretkey SecureKey = keyfactory.generatesEcret (DKS);
// 암호 개체는 실제로 암호 해독 작업을 완료합니다
암호 암호 = cipher.getinstance (des);
// 키로 암호 개체를 초기화합니다
cipher.init (cipher.decrypt_mode, securekey, sr);
반환 cipher.dofinal (데이터);
}
}
ziputil2
.
코드 사본은 다음과 같습니다.
import java.io.bytearrayinputstream;
import java.io.BytearRayoutputStream;
import java.io.ioexception;
import java.util.zip.gzipinputstream;
import java.util.zip.gzipoutputstream;
// 지퍼 모드에서 문자열을 압축하고 압축합니다
공개 수업 ziputil2 {
// 테스트 방법
public static void main (String [] args)은 ioexception {
// String을 테스트합니다
문자열 str = "";
System.out.println ( "원래 길이 :" + str.length ());
System.out.println ( "압축 후 :" + ziputil2.compress (str) .length ());
System.out
.println ( "decompress :" + ziputil2.uncompress (ziputil2.compress (str)));
}
// 압축
public static string compress (String str)는 ioexception {
if (str == null || str.length () == 0) {
Return str;
}
bytearrayoutputStream out = 새로운 BytearRayoutputStream ();
gzipoutputStream gzip = 새로운 gzipoutputStream (out);
gzip.write (str.getBytes ());
gzip.close ();
꺼짐 toString ( "ISO-8859-1");
}
// 압축 압축
공개 정적 문자열 불모한 (String Str)는 ioexception {
if (str == null || str.length () == 0) {
Return str;
}
bytearrayoutputStream out = 새로운 BytearRayoutputStream ();
bytearrayinputStream in = New BytearRayinputStream (
str.getBytes ( "ISO-8859-1");
gzipinputStream gunzip = 새로운 gzipinputstream (in);
바이트 [] 버퍼 = 새로운 바이트 [256];
int n;
while ((n = gunzip.read (buffer))> = 0) {
out.write (버퍼, 0, n);
}
// toString ()은 플랫폼 기본 인코딩을 사용하며 Tostring (GBK)과 같이 명시 적으로 지정할 수도 있습니다.
return.toString ();
}
}