في القسم السابق، قدمنا استخدام بعض فئات التشفير وفك التشفير، فلنجمعها معًا لإجراء اختبار بسيط.
النشاط الرئيسي:
انسخ رمز الكود كما يلي:
package com.home.testdes;
استيراد android.os.Bundle؛
import android.util.Log;
import android.app.Activity;
الطبقة العامة MainActivity تمتد النشاط {
@تجاوز
باطل محمي onCreate(حزمة saveInstanceState) {
super.onCreate(savedInstanceState);
DESUtil u = new DESUtil();
String mi = u.getEnc("أنا أحبك");
Log.i("بعد التشفير"، mi);
String ming = u.getDec(mi);
Log.i("بعد فك التشفير"، مينغ)؛
}
}
أدوات التشفير وفك التشفير:
انسخ رمز الكود كما يلي:
package com.home.testdes;
import java.security.Key;
import java.security.spec.AlgorithmParameterSpec;
استيراد javax.crypto.Cipher؛
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
import javax.crypto.spec.IvParameterSpec;
استيراد android.util.Base64;
/**
* استخدم أدوات التشفير وفك التشفير DES
*
* @ المؤلف المسؤول
*
*/
الطبقة العامة DESUtil {
مفتاح المفتاح الخاص؛// قيمة المفتاح للمفتاح
البايت الخاص[] DESkey;
البايت الخاص[] DESIV = { 0x12، 0x34، 0x56، 0x78، (بايت) 0x90، (بايت) 0xAB،
(بايت) 0xCD، (بايت) 0xEF };
Private AlgorithmParameterSpec iv = null;// واجهة المعلمة لخوارزمية التشفير
عام DESUtil () {
يحاول {
this.DESkey = "abcdefghijk".getBytes("UTF-8");// اضبط المفتاح
DESKeySpec keySpec = new DESKeySpec(DESkey);//تعيين المعلمات الرئيسية
iv = new IvParameterSpec(DESIV);
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");// احصل على مصنع المفاتيح
key = keyFactory.generateSecret(keySpec);//احصل على الكائن الرئيسي
} قبض (الاستثناء ه) {
printStackTrace();
}
}
/**
* سلسلة مشفرة، وإدخال نص عادي، وإخراج النص المشفر
*
* @param inputString
* نص عادي ليتم تشفيره
* @return سلسلة مشفرة
*/
سلسلة getEnc العامة (سلسلة الإدخال سلسلة) {
byte[] byteMi = null;
byte[] byteMing = null;
سلسلة الإخراج = ""؛
يحاول {
byteMing = inputString.getBytes("UTF-8");
byteMi = this.getEncCode(byteMing);
byte[] temp = Base64.encode(byteMi, Base64.DEFAULT);
OutputString = new String(temp);
} قبض (الاستثناء ه) {
} أخيراً {
byteMing = null;
byteMi = null;
}
إرجاع سلسلة الإخراج؛
}
/**
* فك تشفير السلسلة وإدخال النص العادي كنص مشفر وإخراج
*
* @param inputString
* السلسلة التي تحتاج إلى فك تشفيرها
*return سلسلة مشفرة
*/
سلسلة عامة getDec(سلسلة الإدخالسلسلة) {
byte[] byteMing = null;
byte[] byteMi = null;
String strMing = "";
يحاول {
byteMi = Base64.decode(inputString.getBytes(), Base64.DEFAULT);
byteMing = this.getDesCode(byteMi);
strMing = new String(byteMing, "UTF8");
} قبض (الاستثناء ه) {
} أخيراً {
byteMing = null;
byteMi = null;
}
إرجاع strMing؛
}
/**
* يستخدم التشفير إدخال نص عادي بالبايت [] وإخراج نص التشفير بالبايت []
*
* @param بت
* سيتم تشفير Bytecode
* @return الرمز الثانوي المشفر
*/
البايت الخاص[] getEncCode(byte[] bt) {
byte[] byteFina = null;
تشفير التشفير؛
يحاول {
// احصل على مثيل التشفير
cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, key, iv);
byteFina = cipher.doFinal(bt);
} قبض (الاستثناء ه) {
printStackTrace();
} أخيراً {
تشفير = فارغ؛
}
إرجاع بايت فينا؛
}
/**
* يستخدم فك التشفير إدخال النص المشفر بالبايت [] وإخراج النص العادي بالبايت []
*
* @param بت
* سيتم فك تشفير البايت كود
*return كود البايت الذي تم فك تشفيره
*/
البايت الخاص[] getDesCode(byte[] bt) {
تشفير التشفير؛
byte[] byteFina = null;
يحاول {
// احصل على مثيل التشفير
cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, key, iv);
byteFina = cipher.doFinal(bt);
} قبض (الاستثناء ه) {
printStackTrace();
} أخيراً {
تشفير = فارغ؛
}
إرجاع بايت فينا؛
}
}