Pada bagian sebelumnya, kami memperkenalkan penggunaan beberapa kelas enkripsi dan dekripsi. Mari kita gabungkan keduanya untuk melakukan pengujian sederhana. Kodenya adalah sebagai berikut:
Aktivitas Utama:
Copy kode kodenya sebagai berikut:
paket com.home.testdes;
impor Android.os.Bundle;
impor android.util.Log;
impor android.app.Activity;
kelas publik MainActivity memperluas Aktivitas {
@Mengesampingkan
protected void onCreate(Paket yang disimpanInstanceState) {
super.onCreate(savedInstanceState);
DESUtil u = DESUtil baru();
String mi = u.getEnc("Aku cinta kamu");
Log.i("Setelah enkripsi", mi);
String ming = u.getDec(mi);
Log.i("Setelah dekripsi", ming);
}
}
Alat enkripsi dan dekripsi:
Copy kode kodenya sebagai berikut:
paket com.home.testdes;
impor java.keamanan.Kunci;
impor java.security.spec.AlgorithmParameterSpec;
impor javax.crypto.Cipher;
impor javax.crypto.SecretKeyFactory;
impor javax.crypto.spec.DESKeySpec;
impor javax.crypto.spec.IvParameterSpec;
impor android.util.Base64;
/**
* Gunakan alat enkripsi dan dekripsi DES
*
* @penulis Administrator
*
*/
kelas publik DESUtil {
kunci Kunci pribadi;// nilai kunci dari kunci
byte pribadi[] DESkey;
byte pribadi[] DESIV = { 0x12, 0x34, 0x56, 0x78, (byte) 0x90, (byte) 0xAB,
(bita) 0xCD, (bita) 0xEF };
private AlgorithmParameterSpec iv = null;//Parameter antarmuka algoritma enkripsi
DESUtil publik() {
mencoba {
this.DESkey = "abcdefghijk".getBytes("UTF-8");//Setel kuncinya
DESKeySpec keySpec = new DESKeySpec(DESkey);//Menetapkan parameter kunci
iv = new IvParameterSpec(DESIV); // Tetapkan vektor
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");//Dapatkan pabrik kunci
key = keyFactory.generateSecret(keySpec);//Dapatkan objek kunci
} tangkapan (Pengecualian e) {
e.printStackTrace();
}
}
/**
* String Terenkripsi, masukan teks biasa, keluaran teks sandi
*
* @param masukanString
* Teks biasa untuk dienkripsi
* @mengembalikan string terenkripsi
*/
String publik getEnc(String inputString) {
byte[] byteMi = nol;
byte[] byteMing = nol;
String keluaranString = "";
mencoba {
byteMing = inputString.getBytes("UTF-8");
byteMi = ini.getEncCode(byteMing);
byte[] temp = Base64.encode(byteMi, Base64.DEFAULT);
outputString = String baru(temp);
} tangkapan (Pengecualian e) {
} Akhirnya {
byteMing = nol;
byteMi = nol;
}
kembalikan outputString;
}
/**
* Dekripsi String dan masukkan teks biasa sebagai teks tersandi dan keluaran
*
* @param masukanString
* String yang perlu didekripsi
* @return string yang didekripsi
*/
String publik getDec(String inputString) {
byte[] byteMing = nol;
byte[] byteMi = nol;
String strMing = "";
mencoba {
byteMi = Base64.decode(inputString.getBytes(), Base64.DEFAULT);
byteMing = ini.getDesCode(byteMi);
strMing = String baru(byteMing, "UTF8");
} tangkapan (Pengecualian e) {
} Akhirnya {
byteMing = nol;
byteMi = nol;
}
kembalikan strMing;
}
/**
* Enkripsi menggunakan input teks biasa byte[] dan output teks sandi byte[]
*
* @param bt
* Bytecode untuk dienkripsi
* @mengembalikan bytecode terenkripsi
*/
byte pribadi[] getEncCode(byte[] bt) {
byte[] byteFina = nol;
sandi sandi;
mencoba {
// Dapatkan contoh Cipher
sandi = Cipher.getInstance("DES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, kunci, iv);
byteFina = cipher.doFinal(bt);
} tangkapan (Pengecualian e) {
e.printStackTrace();
} Akhirnya {
sandi = nol;
}
kembalikan byteFina;
}
/**
* Dekripsi menggunakan input ciphertext byte[] dan output teks biasa byte[]
*
* @param bt
* Bytecode yang akan didekripsi
* @return bytecode yang didekripsi
*/
byte pribadi[] getDesCode(byte[] bt) {
sandi sandi;
byte[] byteFina = nol;
mencoba {
// Dapatkan contoh Cipher
sandi = Cipher.getInstance("DES/CBC/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, kunci, iv);
byteFina = cipher.doFinal(bt);
} tangkapan (Pengecualian e) {
e.printStackTrace();
} Akhirnya {
sandi = nol;
}
kembalikan byteFina;
}
}