Artikel ini menjelaskan analisis implementasi Java dari algoritma enkripsi dan dekripsi. Bagikan untuk referensi Anda, sebagai berikut:
Perkenalan:
Algoritma enkripsi data (DEA) adalah algoritma enkripsi simetris yang cenderung menjadi sistem kunci yang paling banyak digunakan, terutama dalam melindungi keamanan data keuangan. DEA yang awalnya dikembangkan tertanam dalam perangkat keras. Biasanya, mesin teller otomatis (ATM) menggunakan DEA. Itu berasal dari pekerjaan penelitian IBM, yang juga memiliki hak paten selama beberapa tahun, tetapi setelah kedaluwarsa pada tahun 1983, ia berada dalam ruang lingkup publik dan memungkinkannya untuk digunakan dalam kondisi tertentu tanpa biaya penggunaan paten. Itu secara resmi diadopsi oleh pemerintah AS pada tahun 1977.
Munculnya praktis des deciphers setelah tahun 1998 sepenuhnya menyatakan bahwa algoritma DES tidak lagi aman. Pada tahun 1999, NIST mengeluarkan standar baru, menetapkan bahwa algoritma DES hanya dapat digunakan dalam sistem enkripsi warisan, tetapi tidak membatasi penggunaan algoritma Desede. Algoritma DES hari ini meluncurkan tahap sejarah, dan algoritma AES disebut pengganti.
Prinsip Enkripsi:
DES menggunakan kunci 56-bit dengan bit paritas 8-bit tambahan untuk menghasilkan ukuran paket maksimum 64-bit. Ini adalah kata sandi blok berulang menggunakan teknik yang disebut Feistel, di mana blok teks terenkripsi dibagi menjadi dua. Gunakan subkey untuk menerapkan fungsi loop ke satu setengah, dan kemudian lakukan operasi "eksklusif atau" dengan setengah lainnya; Kemudian bertukar dua bagian ini, dan prosesnya akan berlanjut, tetapi loop terakhir tidak akan ditukar. DES menggunakan 16 siklus, empat operasi dasar: eksklusif atau, permutasi, substitusi, dan operasi shift.
Dukungan JDK untuk Algoritma DES
Panjang kunci: 56 bit
Mode Kerja: ECB/CBC/PCBC/CTR/CTS/CFB/CFB8 ke CFB128/OFB/OBF8 ke OFB128
Metode pengisian: nopadding/pkcs5padding/iso10126padding/
Enkripsi Java dan Dekripsi Algoritma Enkripsi Simetris Desede
Desede adalah algoritma enkripsi triple des, juga dikenal sebagai 3des atau triple des. Gunakan tiga (atau dua) tombol berbeda untuk mengenkripsi blok data tiga kali (atau dua) DES (enkripsi sekali lebih cepat daripada melakukan enkripsi biasa tiga kali). Kekuatan Triple DES kira-kira sama dengan kekuatan kunci dari 112-bit. Keamanan ditingkatkan melalui jumlah iterasi, tetapi juga menyebabkan masalah efisiensi enkripsi yang rendah. Karena efisiensi algoritma Desede, algoritma AES lahir.
Sejauh ini, tidak ada yang memberikan cara yang efektif untuk menyerang Triple Des. Jika Anda mencari kunci di ruang utamanya, maka karena ruang terlalu besar, ini sebenarnya tidak layak. Jika metode serangan diferensial digunakan, kompleksitas meningkat secara eksponensial dibandingkan dengan DES tunggal.
Ada empat model untuk triple des
Kode Enkripsi Java untuk Algoritma DES
Paket com.favccxx.codelib; impor java.security.securerandom; impor javax.crypto.cipher; impor javax.crypto.secretkey; import javax.crypto.secretkeyfactory; impor javax.crypto.spec.deskeyspec; public static byte [] enkripsi (byte [] src, byte [] key) melempar Exception {// DES Algorithm memerlukan sumber bilangan acak yang tepercaya SecureRandom Sr = baru Securerandom (); // Buat objek deskeyspec dari data kunci asli deskeyspec dks = new deskeyspec (key); // Buat pabrik utama dan gunakan untuk mengonversi deskeyspec menjadi objek SecretKey SecretKeyFactory keyFactory = SecretKeyFactory.getInstance (DES); Secretkey SecureKey = KeyFactory.GenerateSecret (DKS); // Objek Cipher sebenarnya melengkapi operasi enkripsi Cipher cipher = cipher.getInstance (des); // inisialisasi cipher objek cipher.init (cipher.encrypt_mode, SecureKey, sr); // eksekusi formal pengembalian operasi enkripsi cipher.dofinal (src); } / **** @param Kata Sandi Kata Sandi* @param Kunci Enkripsi String* @return* / Public Final Static String Encrypt (Kata Sandi String, Kunci String) {coba {return byte2String (Encrypt (Password.getByTes (), key.getBytes ())); } catch (Exception e) {} return null; } public static string byte2string (byte [] b) {string hs = ""; String stmp = ""; untuk (int n = 0; n <b.length; n ++) {stmp = (java.lang.integer.tohexstring (b [n] & 0xff)); if (stmp.length () == 1) hs = hs + "0" + stmp; lain hs = hs + stmp; } return hs.touppercase (); } public static void main (string [] args) {string encryptString = encrypt ("adalah zhang sanfeng", "uji cina dan bahasa Inggris mixed-up @123654 {"); System.out.println (encryptString); } // output: B00542E93695F4CFCE34FC4393C2F4BF} Implementasi Algoritma Dekripsi DES
Paket com.favccxx.codelib; import java.security.securerandom; impor javax.crypto.cipher; impor javax.crypto.secretkey; import javax.crypto.secretkeyfactory; impor javax.crypto.spec.deskeyspec; / ** * * @param SRC Sumber Data * Kunci Kunci @param, Panjang Harus Berlipat Kelipatan 8 * @Return * @Throws Exception */ Public Static Byte [] Decrypt (byte [] SRC, byte [] Key) melempar pengecualian {// algoritm () memerlukan sumber acak yang tepercaya securerandom sr = needureDom sr = sore sumber sumber sore = // de algorithm; // Buat objek deskeyspec dari data kunci asli deskeyspec dks = new deskeyspec (key); // Buat pabrik utama, dan kemudian gunakan untuk mengubah objek Deskeyspec menjadi objek SecretKey SecretkeyFactory keyFactory = SecretKeyFactory.getInstance (DES); Secretkey SecureKey = KeyFactory.GenerateSecret (DKS); // Objek cipher sebenarnya melengkapi operasi dekripsi cipher cipher = cipher.getInstance (des); // inisialisasi cipher objek cipher.init (cipher.decrypt_mode, SecureKey, sr); // eksekusi formal dari pengembalian operasi dekripsi cipher.dofinal (src); } public final static string decrypt (string data, string key) {coba {return new string (decrypt (string2byte (data.getbytes ()), key.getbytes ())); } catch (Exception e) {E.PrintStackTrace (); } return null; } public static byte [] string2byte (byte [] b) {if ((b.length % 2)! = 0) Lempar baru ilegalargumentException ("Panjang tidak bahkan"); byte [] b2 = byte baru [b.length / 2]; untuk (int n = 0; n <b.length; n += 2) {string item = string baru (b, n, 2); b2 [n / 2] = (byte) integer.parseint (item, 16); } return b2; } public static void main (string [] args) {string desencryptString = decrypt ("b00542e93695f4cfce34fc4393c2f4bf", "uji cina dan bahasa Inggris campuran @123654"); System.out.println (desencryptString); } // output: Apakah Zhang Sanfeng}Saya harap artikel ini akan membantu Anda. Ini semua bagi Anda untuk memperkenalkan konten analisis implementasi Java dari algoritma enkripsi dan dekripsi. Saya harap semua orang akan terus mengikuti situs web kami! Jika Anda ingin belajar Java, Anda dapat terus mengikuti situs web ini.