다음과 같이 코드 코드를 복사합니다.
java.security.Key 가져오기;
import java.security.SecureRandom;
import java.security.spec.AlgorithmParameterSpec;
import javax.crypto.Cipher;
import javax.crypto.SecretKeyFactory;
javax.crypto.spec.DESKeySpec 가져오기;
javax.crypto.spec.IvParameterSpec 가져오기;
org.apache.commons.logging.Log 가져오기;
org.apache.commons.logging.LogFactory 가져오기;
공개 클래스 데
{
공개 정적 최종 문자열 ALGORITHM_DES = "DES/CBC/PKCS5Padding";
개인 정적 로그 로그 = LogFactory.getLog(Des.class);
/**
* DES 알고리즘, 암호화
*
* 암호화할 @param 데이터 문자열
* @param key 암호화 개인 키, 길이는 8비트보다 작을 수 없습니다.
* @return 암호화된 바이트 배열, 일반적으로 Base64 인코딩과 함께 사용됩니다.
* @throws CryptException 예외
*/
공개 정적 문자열 인코딩(문자열 키, 문자열 데이터)에서 예외가 발생합니다.
{
return encode(key, data.getBytes());
}
/**
* DES 알고리즘, 암호화
*
* 암호화할 @param 데이터 문자열
* @param key 암호화 개인 키, 길이는 8비트보다 작을 수 없습니다.
* @return 암호화된 바이트 배열, 일반적으로 Base64 인코딩과 함께 사용됩니다.
* @throws CryptException 예외
*/
공개 정적 문자열 인코딩(문자열 키,바이트[] 데이터)에서 예외가 발생합니다.
{
노력하다
{
DESKeySpec dks = new DESKeySpec(key.getBytes());
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
//키 길이는 8바이트보다 작을 수 없습니다.
키 secretKey = keyFactory.generateSecret(dks);
암호 암호 = Cipher.getInstance(ALGORITHM_DES);
IvParameterSpec iv = new IvParameterSpec("********".getBytes());
AlgorithmParameterSpec paramSpec = iv;
cipher.init(Cipher.ENCRYPT_MODE, secretKey,paramSpec);
byte[] 바이트 = cipher.doFinal(data);
Base64.encode(바이트)를 반환합니다.
} 잡기(예외 e)
{
새로운 Exception(e)을 던진다;
}
}
/**
* DES 알고리즘, 복호화
*
* 복호화할 @param 데이터 문자열
* @param key 복호화 개인 키, 길이는 8비트보다 작을 수 없습니다.
* @return 복호화된 바이트 배열
* @throws 예외 예외
*/
public static byte[] decode(String key,byte[] data)에서 예외가 발생합니다.
{
노력하다
{
SecureRandom sr = new SecureRandom();
DESKeySpec dks = new DESKeySpec(key.getBytes());
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
//키 길이는 8바이트보다 작을 수 없습니다.
키 secretKey = keyFactory.generateSecret(dks);
암호 암호 = Cipher.getInstance(ALGORITHM_DES);
IvParameterSpec iv = new IvParameterSpec("********".getBytes());
AlgorithmParameterSpec paramSpec = iv;
cipher.init(Cipher.DECRYPT_MODE, secretKey,paramSpec);
cipher.doFinal(data)를 반환합니다.
} 잡기(예외 e)
{
// e.printStackTrace();
새로운 Exception(e)을 던진다;
}
}
/**
* 인코딩된 값을 가져옵니다
* @param 키
* @param 데이터
* @반품
* @throwsException
* @throwsException
*/
공개 정적 문자열 decodeValue(문자열 키, 문자열 데이터)에서 예외가 발생합니다.
{
바이트[] 데이터;
문자열 값 = null;
datas = 디코드(키, Base64.decode(데이터));
값 = 새 문자열(데이터);
if (value.equals("")){
새로운 예외()를 던져라;
}
반환값;
}
}