รหัสผ่านทั่วไป ได้แก่: รหัสผ่านผู้ใช้ฐานข้อมูล, รหัสผ่านผู้ใช้แพลตฟอร์ม SMS, รหัสผ่านคงที่สำหรับการตรวจสอบระหว่างระบบ ฯลฯ
คลาสเครื่องมือนี้อ้างอิงถึงการใช้งานส่วนที่ 5.3 ของหนังสือ "Spring.3.x Enterprise Application Development Practice"
ข้อมูลโค้ดและคำอธิบายประกอบที่สมบูรณ์มีดังนี้:
คัดลอกรหัสรหัสดังต่อไปนี้:
แพ็คเกจ com.cncounter.util.comm;
นำเข้า java.security.Key;
นำเข้า java.security.SecureRandom;
นำเข้า javax.crypto.Cipher;
นำเข้า javax.crypto.KeyGenerator;
นำเข้า sun.misc.BASE64Decoder;
นำเข้า sun.misc.BASE64Encoder;
DESUtils คลาสสาธารณะ {
// สำคัญ
คีย์สแตติกส่วนตัว
// เมล็ดคีย์
สตริงคงที่ส่วนตัว KEY_STR = "[email protected]";
// คงที่
สาธารณะคงที่สตริงสุดท้าย UTF_8 = "UTF-8";
สาธารณะคงที่สุดท้าย String DES = "DES";
// การเริ่มต้นแบบคงที่
คงที่{
พยายาม {
// เครื่องกำเนิดคีย์
เครื่องกำเนิด KeyGenerator = KeyGenerator.getInstance (DES);
// การเริ่มต้น, ตัวดำเนินการสุ่มที่ปลอดภัย
เครื่องกำเนิดไฟฟ้า. init (SecureRandom ใหม่ ( KEY_STR.getBytes (UTF_8) ));
// สร้างคีย์
คีย์ = เครื่องกำเนิดไฟฟ้าสร้างคีย์ ();
เครื่องกำเนิดไฟฟ้า = โมฆะ;
} จับ (ข้อยกเว้นจ) {
โยน RuntimeException ใหม่ (e);
-
-
-
* เข้ารหัสสตริงต้นทางและส่งคืนสตริงที่เข้ารหัสที่เข้ารหัส BASE64
* สตริงแหล่งที่มา @param ข้อความธรรมดา
* @return สตริงข้อความเข้ารหัส
-
การเข้ารหัสสตริงสาธารณะแบบคงที่ (แหล่งสตริง) {
พยายาม {
// รับอาร์เรย์ไบต์ตามรูปแบบการเข้ารหัส
ไบต์ [] sourceBytes = source.getBytes (UTF_8);
// โหมดการเข้ารหัส DES
การเข้ารหัส = Cipher.getInstance(DES);
cipher.init (Cipher.ENCRYPT_MODE, คีย์);
//อาร์เรย์ไบต์ที่เข้ารหัส
ไบต์ [] encryptSourceBytes = cipher.doFinal (sourceBytes);
// ตัวเข้ารหัส Base64
BASE64Encoder base64Encoder = BASE64Encoder ใหม่();
กลับ base64Encoder.encode (encryptSourceBytes);
} จับ (ข้อยกเว้นจ) {
// การโยนยังถือได้ว่าเป็นเส้นทางกลับ
โยน RuntimeException ใหม่ (e);
-
-
-
* ถอดรหัส/ถอดรหัสสตริงที่เข้ารหัสโดยวิธี encode() ของคลาสเครื่องมือนี้
* @param encrypted สตริงที่เข้ารหัส ซึ่งก็คือ ไซเฟอร์เท็กซ์
* @return สตริงข้อความธรรมดา
-
ถอดรหัสสตริงสาธารณะแบบคงที่ (เข้ารหัสสตริง) {
// ตัวถอดรหัส Base64
BASE64Decoder base64Decoder = BASE64Decoder ใหม่();
พยายาม {
// ขั้นแรกให้ทำการถอดรหัส base64
ไบต์ [] cryptedBytes = base64Decoder.decodeBuffer (เข้ารหัส);
// โหมดถอดรหัส DES
การเข้ารหัส = Cipher.getInstance(DES);
cipher.init (Cipher.DECRYPT_MODE, คีย์);
//อาร์เรย์ไบต์ถอดรหัส
ไบต์ [] decryptStrBytes = cipher.doFinal (cryptedBytes);
// แปลงอาร์เรย์ไบต์เป็นสตริงโดยใช้รูปแบบการเข้ารหัสที่กำหนด
ส่งคืนสตริงใหม่ (decryptStrBytes, UTF_8);
} จับ (ข้อยกเว้นจ) {
// แบบฟอร์มนี้เหมาะสำหรับการประมวลผลคลาสเครื่องมือจริงๆ
โยน RuntimeException ใหม่ (e);
-
-
// การทดสอบหน่วย
โมฆะคงที่สาธารณะ main (String [] args) {
//สตริงที่ต้องเข้ารหัส
สตริงอีเมล = "[email protected]";
//เข้ารหัส
สตริงที่เข้ารหัส = DESUtils.encode (อีเมล);
//ถอดรหัส
สตริงถอดรหัส = DESUtils.decode (เข้ารหัส);
//ผลลัพธ์ที่ออกมา;
System.out.println("อีเมล: " + อีเมล);
System.out.println("เข้ารหัส: " + เข้ารหัส);
System.out.println("ถอดรหัส: " + ถอดรหัสแล้ว);
System.out.println("email.equals(ถอดรหัส): " + email.equals(ถอดรหัส));
-
-