تتضمن الكلمات الشائعة: كلمة مرور مستخدم قاعدة البيانات، وكلمة مرور مستخدم منصة الرسائل القصيرة، وكلمة المرور الثابتة للتحقق بين الأنظمة، وما إلى ذلك.
تشير فئة الأداة هذه إلى تنفيذ القسم 5.3 من كتاب "Spring.3.x Enterprise Application Development Practice".
المعلومات الكاملة للتعليمات البرمجية والتعليقات التوضيحية هي كما يلي:
انسخ رمز الكود كما يلي:
الحزمة com.cncounter.util.comm;
import java.security.Key;
import java.security.SecureRandom;
استيراد javax.crypto.Cipher؛
استيراد javax.crypto.KeyGenerator؛
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
الطبقة العامة DESUtils {
// مفتاح
مفتاح المفتاح الثابت الخاص؛
// البذور الرئيسية
سلسلة ثابتة خاصة KEY_STR = "[email protected]"؛
// ثابت
السلسلة النهائية العامة الثابتة UTF_8 = "UTF-8"؛
السلسلة النهائية العامة الثابتة DES = "DES"؛
// التهيئة الثابتة
ثابت {
يحاول {
// مولد المفتاح
مولد KeyGenerator = KeyGenerator.getInstance(DES);
// التهيئة، عامل تشغيل عشوائي آمن
generator.init(new SecureRandom( KEY_STR.getBytes(UTF_8) ));
// توليد المفتاح
المفتاح = generator.generateKey();
مولد = فارغ؛
} قبض (الاستثناء ه) {
رمي RuntimeException (e) الجديد ؛
}
}
/**
* تشفير السلسلة المصدر وإرجاع السلسلة المشفرة بتشفير BASE64.
* @param سلسلة مصدر المصدر، نص عادي
* @return سلسلة النص المشفر
*/
ترميز السلسلة الثابتة العامة (مصدر السلسلة) {
يحاول {
// احصل على مصفوفة البايت وفقًا لتنسيق الترميز
بايت[] sourceBytes = source.getBytes(UTF_8);
// وضع التشفير DES
تشفير التشفير = Cipher.getInstance(DES);
cipher.init(Cipher.ENCRYPT_MODE, key);
// صفيف بايت مشفرة
byte[] encryptSourceBytes = cipher.doFinal(sourceBytes);
// التشفير Base64
BASE64Encoder base64Encoder = new BASE64Encoder();
إرجاع base64Encoder.encode(encryptSourceBytes);
} قبض (الاستثناء ه) {
// يمكن أيضًا اعتبار الرمي بمثابة مسار عودة
رمي RuntimeException (e) الجديد ؛
}
}
/**
* فك تشفير/فك تشفير السلسلة المشفرة بواسطة طريقة encode() لفئة الأداة هذه
* @param مشفرة السلسلة المشفرة، أي النص المشفر
* @return سلسلة نصية عادية
*/
فك تشفير السلسلة الثابتة العامة (سلسلة مشفرة) {
// وحدة فك الترميز Base64
BASE64Decoder base64Decoder = new BASE64Decoder();
يحاول {
// قم أولاً بإجراء فك تشفير Base64
byte[] cryptedBytes = base64Decoder.decodeBuffer(encrypted);
// وضع فك التشفير DES
تشفير التشفير = Cipher.getInstance(DES);
cipher.init(Cipher.DECRYPT_MODE, key);
// صفيف البايت الذي تم فك تشفيره
byte[] decryptStrBytes = cipher.doFinal(cryptedBytes);
// تحويل مصفوفة البايت إلى سلسلة باستخدام تنسيق الترميز المحدد
إرجاع سلسلة جديدة (decryptStrBytes، UTF_8)؛
} قبض (الاستثناء ه) {
// هذا النموذج مناسب بالفعل لمعالجة فئات الأدوات
رمي RuntimeException (e) الجديد ؛
}
}
// اختبار الوحدة
public static void main(String[] args) {
// السلسلة التي تحتاج إلى التشفير
سلسلة البريد الإلكتروني = "[email protected]"؛
//تشفير
سلسلة مشفرة = DESUtils.encode(email);
// فك التشفير
تم فك تشفير السلسلة = DESUtils.decode(encrypted);
// نتيجة الإخراج؛
System.out.println("البريد الإلكتروني: " + البريد الإلكتروني);
System.out.println("مشفر:" + مشفر);
System.out.println("تم فك تشفيره:" + فك تشفيره);
System.out.println("email.equals(decrypted): " + email.equals(decrypted));
}
}