코드 사본은 다음과 같습니다.
/*문자열 desede (3DES) 암호화*/
java.security.security import;
javax.crypto.cipher 가져 오기;
javax.crypto.secretkey import;
javax.crypto.spec.secretkeyspec import;
import sun.misc.base64decoder;
import sun.misc.base64encoder;
공개 클래스 des3 {
개인 정적 최종 문자열 알고리즘 = "Desede";
// des, desede, blowfish
// KeyByte는 길이가 24 바이트 인 암호화 키입니다.
// SRC는 암호화 된 데이터 버퍼 (Source)입니다.
public static string alcryptMode (byte [] keyByte, byte [] src)
{
노력하다
{
// 키를 생성합니다
Secretkey Desktop = New SecretkeySpec (KeyByte, 알고리즘);
// 암호화
암호 C1 = cipher.getInstance (알고리즘);
c1.init (cipher.encrypt_mode, 데스크탑);
// 암호화를 시작합니다
바이트 [] 암호화 bytearray = c1.dofinal (src);
// 암호화 작동 후 바이트 []를 Base64의 문자열로 변환하십시오
Base64encoder Enc = 새로운 Base64encoder ();
enc.encode (EncryptedBytearRay);
}
catch (java.security.nosuchalgorithmexception e1)
{
e1.printstacktrace ();
}
catch (javax.crypto.nosuchpaddingException e2)
{
e2.printstacktrace ();
}
catch (java.lang.exception e3)
{
e3.printstacktrace ();
}
널 리턴;
}
// KeyByte는 길이가 24 바이트 인 암호화 키입니다.
// SRC는 암호화 된 버퍼입니다
public static byte [] decryptMode (byte [] keyByte, String SRC)
{
노력하다 {
// 키를 생성합니다
Secretkey Desktop = New SecretkeySpec (KeyByte, 알고리즘);
// 해독
암호 C1 = cipher.getInstance (알고리즘);
c1.init (cipher.decrypt_mode, 데스크탑);
// 암호 해독 작동 전
Base64decoder dec = 새로운 Base64decoder ();
BYTE [] 암호화 BYTEARRAY = DEC.DECODEBUFFER (SRC);
// 암호 해독 작업은 Base64의 문자열을 바이트로 변환합니다 []
C1.Dofinal (EncryptedByTearRay);
} catch (java.security.nosuchalgorithmexception e1) {
e1.printstacktrace ();
} catch (javax.crypto.nosuchpaddingException e2) {
e2.printstacktrace ();
} catch (java.lang.exception e3) {
e3.printstacktrace ();
}
널 리턴;
}
// 16 진수로 변환합니다
public static string byte2hex (byte [] b) {
문자열 hs = "";
문자열 stmp = "";
for (int n = 0; n <b.length; n ++) {
stmp = (java.lang.integer.tohexstring (b [n] & 0xff));
if (stmp.length () == 1)
hs = hs + "0" + stmp;
또 다른
HS = HS + STMP;
if (n <B.length -1)
hs = hs + ":";
}
return hs.touppercase ();
}
public static void main (String [] args)
{
// 새로운 보안 알고리즘을 추가하면 JCE를 추가해야합니다.
security.addprovider (new com.sun.crypto.provider.sunjce ());
최종 바이트 [] keybytes = {0x11, 0x22, 0x4f, 0x58, (바이트) 0x88, 0x10,
0x40, 0x38, 0x28, 0x25, 0x79, 0x51, (바이트) 0xcb, (byte) 0xdd,
0x55, 0x66, 0x77, 0x29, 0x74, (바이트) 0x98, 0x30, 0x40, 0x36,
(바이트) 0xe2};
문자열 szsrc = "이것은 3DES 테스트입니다. 테스트";
System.out.println ( "암호화 전에 스탠드 :" + szsrc);
String encoded = EncryptMode (keybytes, szsrc.getBytes ());
System.out.println ( "암호화 된 문자열 :" + 인코딩);
바이트 [] srcbytes = decryptMode (keyBytes, 인코딩);
System.out.println ( "해독 된 문자열 :" + (새 문자열 (srcbytes)));
}
}