Yang umum meliputi: kata sandi pengguna basis data, kata sandi pengguna platform SMS, kata sandi tetap untuk verifikasi antar sistem, dll.
Kelas alat ini mengacu pada implementasi Bagian 5.3 dari buku "Praktik Pengembangan Aplikasi Perusahaan Spring.3.x".
Informasi lengkap kode dan anotasinya adalah sebagai berikut:
Copy kode kodenya sebagai berikut:
paket com.cncounter.util.comm;
impor java.keamanan.Kunci;
impor java.keamanan.SecureRandom;
impor javax.crypto.Cipher;
impor javax.crypto.KeyGenerator;
impor sun.misc.BASE64Decoder;
impor sun.misc.BASE64Encoder;
kelas publik DESUtils {
// kunci
kunci kunci statis pribadi;
// Benih KUNCI
String statis pribadi KEY_STR = "[email protected]";
// konstan
String akhir statis publik UTF_8 = "UTF-8";
String akhir statis publik DES = "DES";
// inisialisasi statis
statis{
mencoba {
// Pembuat KUNCI
Generator KeyGenerator = KeyGenerator.getInstance(DES);
//Inisialisasi, operator acak aman
generator.init(SecureRandom baru( KEY_STR.getBytes(UTF_8) ));
// Hasilkan kunci
kunci = generator.generateKey();
pembangkit = nol;
} tangkapan (Pengecualian e) {
lempar RuntimeException baru(e);
}
}
/**
* Enkripsi string sumber dan kembalikan string terenkripsi berkode BASE64.
* @param string sumber sumber, teks biasa
* @mengembalikan string teks sandi
*/
pengkodean String statis publik (Sumber string){
mencoba {
// Dapatkan array byte sesuai dengan format pengkodean
byte[] sourceBytes = sumber.getBytes(UTF_8);
// mode enkripsi DES
Sandi sandi = Cipher.getInstance(DES);
cipher.init(Cipher.ENCRYPT_MODE, kunci);
// Array byte terenkripsi
byte[] encryptSourceBytes = cipher.doFinal(sourceBytes);
// Pembuat enkode Base64
BASE64Encoder base64Encoder = BASE64Encoder baru();
kembalikan base64Encoder.encode(encryptSourceBytes);
} tangkapan (Pengecualian e) {
// melempar juga bisa dianggap sebagai jalur kembali
lempar RuntimeException baru(e);
}
}
/**
* Decode/dekripsi string yang dienkripsi dengan metode encode() dari kelas alat ini
* @param terenkripsi String terenkripsi, yaitu teks tersandi
* @mengembalikan string teks biasa
*/
dekode String statis publik (String terenkripsi){
// Dekoder Base64
BASE64Decoder base64Decoder = BASE64Decoder baru();
mencoba {
// Dekode base64 terlebih dahulu
byte[] cryptedBytes = base64Decoder.decodeBuffer(terenkripsi);
// mode dekripsi DES
Sandi sandi = Cipher.getInstance(DES);
cipher.init(Cipher.DECRYPT_MODE, kunci);
//Array byte yang didekodekan
byte[] decryptStrBytes = cipher.doFinal(cryptedBytes);
// Ubah array byte menjadi string menggunakan format pengkodean yang diberikan
kembalikan String baru (decryptStrBytes, UTF_8);
} tangkapan (Pengecualian e) {
// Formulir ini memang cocok untuk kelas alat pemrosesan
lempar RuntimeException baru(e);
}
}
// pengujian unit
public static void main(String[] args) {
//String yang perlu dienkripsi
String email = "[email protected]";
//enkripsi
String terenkripsi = DESUtils.encode(email);
// Dekripsi
String didekripsi = DESUtils.decode(dienkripsi);
//hasil keluaran;
System.out.println("email: "+email);
System.out.println("terenkripsi: " + terenkripsi);
System.out.println("didekripsi: " + didekripsi);
System.out.println("email.equals(didekripsi): " + email.equals(didekripsi));
}
}