이전 섹션에서는 몇 가지 암호화 및 암호 해독 클래스의 사용을 소개하여 간단한 테스트를 수행해 보겠습니다.
메인활동:
다음과 같이 코드 코드를 복사합니다.
패키지 com.home.testdes;
import android.os.Bundle;
import android.util.Log;
android.app.Activity 가져오기;
공개 클래스 MainActivity는 활동을 확장합니다.
@보수
protected void onCreate(Bundle saveInstanceState) {
super.onCreate(savedInstanceState);
DESUtil u = 새로운 DESUtil();
String mi = u.getEnc("사랑해요");
Log.i("암호화 후", mi);
문자열 ming = u.getDec(mi);
Log.i("복호화 후", ming);
}
}
암호화 및 암호 해독 도구:
다음과 같이 코드 코드를 복사합니다.
패키지 com.home.testdes;
java.security.Key 가져오기;
import java.security.spec.AlgorithmParameterSpec;
import javax.crypto.Cipher;
import javax.crypto.SecretKeyFactory;
javax.crypto.spec.DESKeySpec 가져오기;
javax.crypto.spec.IvParameterSpec 가져오기;
import android.util.Base64;
/**
* DES 암호화 및 암호 해독 도구 사용
*
* @author 관리자
*
*/
공개 클래스 DESUtil {
개인 키 키;// 키의 키 값
개인 바이트[] DESkey;
개인 바이트[] DESIV = { 0x12, 0x34, 0x56, 0x78, (바이트) 0x90, (바이트) 0xAB,
(바이트) 0xCD, (바이트) 0xEF };
private AlgorithmParameterSpec iv = null;//암호화 알고리즘의 매개변수 인터페이스
공개 DESUtil() {
노력하다 {
this.DESkey = "abcdefghijk".getBytes("UTF-8");//키 설정
DESKeySpec keySpec = new DESKeySpec(DESkey);//키 매개변수 설정
iv = new IvParameterSpec(DESIV); // 벡터 설정
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");//키 팩토리 가져오기
key = keyFactory.generateSecret(keySpec);//키 객체 가져오기
} 잡기(예외 e) {
e.printStackTrace();
}
}
/**
* 암호화된 문자열, 일반 텍스트 입력, 암호문 출력
*
* @param inputString
* 암호화할 일반 텍스트
* @return 암호화된 문자열
*/
공개 문자열 getEnc(문자열 inputString) {
바이트[] byteMi = null;
바이트[] byteMing = null;
문자열 출력문자열 = "";
노력하다 {
byteMing = inputString.getBytes("UTF-8");
byteMi = this.getEncCode(byteMing);
byte[] temp = Base64.encode(byteMi, Base64.DEFAULT);
outputString = 새 문자열(임시);
} 잡기(예외 e) {
} 마지막으로 {
바이트밍 = null;
바이트미 = null;
}
출력문자열을 반환합니다.
}
/**
* 문자열을 해독하고 일반 텍스트를 암호문으로 입력하여 출력합니다.
*
* @param inputString
* 복호화해야 할 문자열
* @return 해독된 문자열
*/
공개 문자열 getDec(문자열 inputString) {
바이트[] byteMing = null;
바이트[] byteMi = null;
문자열 strMing = "";
노력하다 {
byteMi = Base64.decode(inputString.getBytes(), Base64.DEFAULT);
byteMing = this.getDesCode(byteMi);
strMing = new String(byteMing, "UTF8");
} 잡기(예외 e) {
} 마지막으로 {
바이트밍 = null;
바이트미 = null;
}
strMing을 반환합니다.
}
/**
* 암호화는 byte[] 일반 텍스트 입력과 byte[] 암호문 출력을 사용합니다.
*
* @param bt
* 암호화할 바이트코드
* @return 암호화된 바이트코드
*/
프라이빗 바이트[] getEncCode(바이트[] bt) {
바이트[] byteFina = null;
암호 암호;
노력하다 {
// 암호 인스턴스 가져오기
cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, 키, iv);
byteFina = cipher.doFinal(bt);
} 잡기(예외 e) {
e.printStackTrace();
} 마지막으로 {
암호 = null;
}
byteFina를 반환합니다.
}
/**
* 복호화에서는 byte[] 암호문 입력과 byte[] 일반 텍스트 출력을 사용합니다.
*
* @param bt
* 복호화할 바이트코드
* @return 복호화된 바이트코드
*/
프라이빗 바이트[] getDesCode(바이트[] bt) {
암호 암호;
바이트[] byteFina = null;
노력하다 {
// 암호 인스턴스 가져오기
cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, 키, iv);
byteFina = cipher.doFinal(bt);
} 잡기(예외 e) {
e.printStackTrace();
} 마지막으로 {
암호 = null;
}
byteFina를 반환합니다.
}
}