การคัดลอกรหัสมีดังนี้:
/*สตริง Desede (3DES) การเข้ารหัส*/
นำเข้า Java.security.Security;
นำเข้า Javax.crypto.cipher;
นำเข้า Javax.crypto.secretkey;
นำเข้า Javax.crypto.spec.secretkeyspec;
นำเข้า Sun.misc.base64decoder;
นำเข้า Sun.misc.base64encoder;
ชั้นเรียนสาธารณะ DES3 {
อัลกอริทึมสตริงสุดท้ายคงที่ = "Desede";
// des, desede, blowfish
// KeyByte เป็นคีย์การเข้ารหัสที่มีความยาว 24 ไบต์
// src เป็นบัฟเฟอร์ข้อมูลที่เข้ารหัส (แหล่งที่มา)
String public String EncryptMode (byte [] keyByte, byte [] src)
-
พยายาม
-
// สร้างคีย์
SecretKey Desktop = New SecretKeySpec (KeyByte, อัลกอริทึม);
// การเข้ารหัส
CIPHER C1 = CIPHER.GETINSTANCE (อัลกอริทึม);
c1.init (cipher.encrypt_mode, เดสก์ท็อป);
// เริ่มการเข้ารหัส
ไบต์ [] EncryptedByTearray = C1.Dofinal (SRC);
// หลังจากการดำเนินการเข้ารหัสให้แปลงไบต์ [] เป็นสตริงของ Base64
Base64Encoder ENC = ใหม่ base64Encoder ();
return enc.encode (EncryptedByTearray);
-
จับ (java.security.nosuchalgorithmexception e1)
-
e1.printstacktrace ();
-
จับ (javax.crypto.nosuchpaddingexception e2)
-
e2.printstacktrace ();
-
จับ (java.lang.exception e3)
-
e3.printstacktrace ();
-
คืนค่า null;
-
// KeyByte เป็นคีย์การเข้ารหัสที่มีความยาว 24 ไบต์
// src เป็นบัฟเฟอร์ที่เข้ารหัส
สาธารณะคงที่สาธารณะ [] DecryptMode (byte [] keyByte, String SRC)
-
พยายาม {
// สร้างคีย์
SecretKey Desktop = New SecretKeySpec (KeyByte, อัลกอริทึม);
// ถอดรหัส
CIPHER C1 = CIPHER.GETINSTANCE (อัลกอริทึม);
c1.init (cipher.decrypt_mode, เดสก์ท็อป);
// ก่อนการถอดรหัส
base64decoder dec = ใหม่ base64decoder ();
ไบต์ [] EncryptedByTearray = 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 ();
-
คืนค่า null;
-
// แปลงเป็นสตริงเลขฐานสิบหก
สตริงคงที่สาธารณะ byte2Hex (byte [] b) {
สตริง hs = "";
String stmp = "";
สำหรับ (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;
ถ้า (n <b.length - 1)
HS = HS + ":";
-
ส่งคืน hs.touppercase ();
-
โมฆะคงที่สาธารณะหลัก (สตริง [] args)
-
// เพิ่มอัลกอริทึมความปลอดภัยใหม่
Security.addprovider (ใหม่ com.sun.crypto.provider.sunjce ());
ไบต์สุดท้าย [] keybytes = {0x11, 0x22, 0x4f, 0x58, (ไบต์) 0x88, 0x10,
0x40, 0x38, 0x28, 0x25, 0x79, 0x51, (BYTE) 0xCB, (ไบต์) 0xdd,
0x55, 0x66, 0x77, 0x29, 0x74, (ไบต์) 0x98, 0x30, 0x40, 0x36,
(ไบต์) 0xe2};
String szsrc = "นี่คือการทดสอบ 3DES ทดสอบ";
System.out.println ("ยืนก่อนการเข้ารหัส:" + szsrc);
string encoded = encryptMode (keybytes, szsrc.getBytes ());
System.out.println ("สตริงที่เข้ารหัส:" + เข้ารหัส);
ไบต์ [] srcbytes = decryptMode (keybytes, เข้ารหัส);
System.out.println ("สตริงถอดรหัส:" + (สตริงใหม่ (srcbytes)));
-
-