نسخة الكود كما يلي:
/*سلسلة DESEDE (3DES) تشفير*/
استيراد java.security.Security ؛
استيراد javax.crypto.cipher ؛
استيراد javax.crypto.secretkeke ؛
استيراد javax.crypto.spec.secretkeyspec ؛
استيراد sun.misc.base64decoder ؛
استيراد sun.misc.base64encoder ؛
الطبقة العامة des3 {
خوارزمية السلسلة النهائية الثابتة = "DESEDE" ؛
// des ، desede ، flowfish
// keybyte هو مفتاح تشفير بطول 24 بايت
// SRC هو المخزن المؤقت للبيانات المشفرة (المصدر)
تشفير السلسلة الثابتة العامة (بايت [] keybyte ، بايت [] SRC)
{
يحاول
{
// إنشاء المفتاح
SecretKey Desktop = New SecretKeySpec (Keybyte ، GettHm) ؛
// التشفير
Cipher C1 = cipher.getInstance (الخوارزمية) ؛
c1.init (cipher.encrypt_mode ، سطح المكتب) ؛
// ابدأ التشفير
byte [] encryptedByTearray = 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 هو المخزن المؤقت المشفر
بايت ثابت عام [] decryptmode (بايت [] keybyte ، سلسلة SRC)
{
يحاول {
// إنشاء المفتاح
SecretKey Desktop = New SecretKeySpec (Keybyte ، GettHm) ؛
// decrypt
Cipher C1 = cipher.getInstance (الخوارزمية) ؛
c1.init (cipher.decrypt_mode ، سطح المكتب) ؛
// قبل عملية فك التشفير
BASE64DECODER DEC = NEW BASE64DECODER () ؛
byte [] encryptedByTearray = Dec.DecodeBuffer (SRC) ؛
// عملية فك التشفير تحول سلسلة BASE64 إلى بايت []
return c1.dofinal (encryptedbytearray) ؛
} catch (java.security.nosuchalgorithmexception e1) {
e1.printstacktrace () ؛
} catch (javax.crypto.nosuchpadddingexception e2) {
e2.printStackTrace () ؛
} catch (java.lang.exception e3) {
e3.printStackTrace () ؛
}
العودة لاغية.
}
// تحويل إلى سلسلة سداسية عشرية
السلسلة الثابتة العامة BYTE2HEX (بايت [] ب) {
سلسلة 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 ()) ؛
byte النهائي [] keybytes = {0x11 ، 0x22 ، 0x4f ، 0x58 ، (byte) 0x88 ، 0x10 ،
0x40 ، 0x38 ، 0x28 ، 0x25 ، 0x79 ، 0x51 ، (byte) 0xcb ، (byte) 0xdd ،
0x55 ، 0x66 ، 0x77 ، 0x29 ، 0x74 ، (byte) 0x98 ، 0x30 ، 0x40 ، 0x36 ،
(بايت) 0xe2} ؛
String SZSRC = "هذا اختبار 3Des. اختبار" ؛
system.out.println ("الوقوف قبل التشفير:" + szsrc) ؛
سلسلة مشفرة = encryptmode (keybytes ، szsrc.getBytes ()) ؛
System.out.println ("سلسلة مشفرة:" + مشفر) ؛
byte [] srcbytes = decryptmode (keybytes ، مشفرة) ؛
System.out.println ("سلسلة فك التشفير:" + (سلسلة جديدة (srcbytes))) ؛
}
}