Enkripsi Simetris Java diimplementasikan menggunakan algoritma DES/3DES/AES.
Ada dua kalimat yang mengatakan ini:
1) Algoritma dan struktur data adalah bagian penting dari pemrograman.
2) Pemrograman adalah algoritma dan struktur data, dan algoritma dan struktur data adalah jiwa pemrograman.
Perhatikan bahwa ini bukan yang saya katakan, dirangkum oleh para programmer yang tak terhitung jumlahnya. Ini termasuk tiga algoritma enkripsi simetris: DES, 3DES dan AE, dan penuh dengan informasi praktis.
1. Algoritma kata sandi simetris
Algoritma kriptografi simetris adalah algoritma enkripsi yang paling banyak digunakan dan paling sering digunakan saat ini. Ini tidak hanya digunakan dalam industri perangkat lunak, tetapi juga populer di industri perangkat keras. Semua jenis infrastruktur akan memberikan prioritas pada algoritma enkripsi simetris setiap kali melibatkan kebutuhan keamanan.
Kunci enkripsi dan kunci dekripsi algoritma kriptografi simetris adalah sama.
(1) Model komunikasi mengenkripsi dan mendekripsi
(2) Fitur: algoritma terbuka, volume perhitungan kecil, kecepatan enkripsi cepat, efisiensi enkripsi yang tinggi
(3) Kelemahan: Kedua belah pihak menggunakan kunci yang sama, dan keamanan tidak dijamin
Ada dua jenis kata sandi simetris: aliran kata sandi dan kata sandi paket, tetapi sekarang kata sandi blok biasa digunakan:
(4) Blok Mode Kerja Kata Sandi
1) ECB: Cipherbook elektronik (yang paling umum digunakan, setiap enkripsi menghasilkan paket ciphertext independen dan tidak akan mempengaruhi paket ciphertext lainnya, yaitu, plainxext yang sama dihasilkan setelah enkripsi)
2) CBC: tautan ciphertext (biasanya digunakan. Sebelum enkripsi plaintext, Anda perlu melakukan operasi XOR dengan ciphertext sebelumnya, yaitu, ciphertext yang berbeda dihasilkan setelah enkripsi plaintext yang sama)
Selain dua mode kerja yang umum digunakan ini, ada:
3) CFB: Umpan Balik Kata Sandi
4) OFB: Umpan Balik Output
5) CTR: Counter
Kelima mode kerja ini terutama diterapkan oleh algoritma dalam kriptografi saat melakukan perhitungan derivasi.
6. Cara mengisi kata sandi blok
1) nopadding: tidak ada pengisian
2) PKCS5PADDING:
3) ISO10126Padding:
7. Kata sandi simetris yang umum digunakan:
1) DES (Standar Enkripsi Data, Standar Enkripsi Data)
2) 3des (Triple DES, Desede, Algoritma Enkripsi Triple Des)
3) AES (Standar Enkripsi Lanjutan, Standar Enkripsi Data Lanjutan, Algoritma AES dapat secara efektif menolak algoritma serangan terhadap DES)
Pertama mari kita lihat perbandingan sederhana dari ketiga algoritma ini:
| algoritma | Panjang kunci | Panjang kunci default | Mode kerja | Metode pengisian |
|---|---|---|---|---|
| Des | 56 | 56 | ECB, CBC, PCBC, CTR, CTS, CFB, CFB8-CFB128, OFB, OFB8-OFB128 | Nopadding, pkcs5padding, iso10126padding |
| 3des | 112, 168 | 168 | ECB, CBC, PCBC, CTR, CTS, CFB, CFB8-CFB128, OFB, OFB8-OFB128 | Nopadding, pkcs5padding, iso10126padding |
| AES | 128, 192, 256 | 128 | ECB, CBC, PCBC, CTR, CTS, CFB, CFB8-CFB128, OFB, OFB8-OFB128 | Nopadding, pkcs5padding, iso10126padding |
Mari kita lihat cara menggunakan tiga algoritma DES/3DES/AES untuk mengimplementasikan enkripsi simetris:
2. Algoritma DES
1.DES: Standar Enkripsi Data, algoritma khas di bidang algoritma enkripsi simetris
2. Fitur: Kuncinya pendek (56 bit), siklus hidup pendek (menghindari retak)
3. Implementasi Java
1) menghasilkan kunci
Keygenerator keygen = keygenerator.getInstance ("des"); // Key Generator keygen.init (56); // Inisialisasi generator kunci Secretkey Secretkey = keygen.generateKey (); // Hasilkan Key Byte [] Key = Secretkey.getEncoded (); // Key Byte Array Byte [] Key = Secretkey.getEncoded (); // Key Byte Array2) Enkripsi
SecretKey Secretkey = SecretKeySpec baru (kunci, "des"); // Memulihkan cipher kunci cipher = cipher.getInstance ("des"); // cipher menyelesaikan enkripsi atau dekripsi kelas pekerja cipher.3) Dekripsi
Secretkey Secretkey = Secretkeyspec baru (kunci, "des"); // Pulihkan cipher kunci cipher = cipher.getInstance ("des"); // cipher menyelesaikan enkripsi atau dekripsi kelas pekerja cipher dataKami dapat menemukan bahwa kami hanya mengatur berbagai mode untuk enkripsi dan dekripsi.
Algoritma 3.3Des
1.3des: Tingkatkan panjang kunci menjadi 112 atau 168 bit, dan tingkatkan keamanan dengan meningkatkan jumlah iterasi.
2. Kekurangan: Kecepatan pemrosesan yang lambat, waktu perhitungan kunci yang panjang, dan efisiensi enkripsi yang rendah
3. Implementasi Java
1) menghasilkan kunci
Keygenerator keygen = keygenerator.getInstance ("desede"); // Key Generator Keygen.init (168);2) Enkripsi 3des
Secretkey Secretkey = SecretKeyspec baru (kunci, "desede"); // Pulihkan cipher kunci cipher = cipher.getInstance ("desede"); // cipher menyelesaikan enkripsi atau dekripsi kelas pekerja cipher data s3) Dekripsi 3des
SecretKey Secretkey = Secretkeyspec baru (kunci, "desede"); // Pulihkan cipher kunci cipher = cipher.getInstance ("desede"); // cipher menyelesaikan enkripsi atau dekripsi kelas pekerja Cipher Data PTS4. Algoritma AES (Direkomendasikan)
1.AES: Standar Enkripsi Data Lanjutan, mampu secara efektif menahan semua serangan yang diketahui terhadap algoritma DES
2. Fitur: Waktu pembentukan kunci pendek, sensitivitas yang baik, persyaratan memori rendah, dan keamanan tinggi
3. Implementasi Java
1) menghasilkan kunci
Keygenerator keygen = keygenerator.getInstance ("AES"); // Key Generator Keygen.init (128);2) Enkripsi AES
Secretkey Secretkey = Secretkeyspec baru (kunci, "AES"); // Kunci pemulihan Cipher = cipher.getInstance ("AES"); // Cipher menyelesaikan enkripsi atau dekripsi kelas pekerja Cipher data s3) Dekripsi AES
SecretKey Secretkey = Secretkeyspec baru (kunci, "AES"); // Memulihkan cipher kunci cipher = cipher.getInstance ("aes"); // cipher menyelesaikan enkripsi atau dekripsi kelas pekerja cipher Data PTSUntuk kenyamanan, saya memiliki kelas alat tertulis untuk algoritma DES/3DES/AES.
Alamat: http://xiazai.vevb.com/201701/yuanma/android-utilslibrary-master(vevb.com).rar (menambahkan kelas alat DES/3DES/AES).
Pada titik ini, tiga algoritma DES/3DES/AES semuanya dilakukan untuk mengimplementasikan enkripsi simetris.
Terima kasih telah membaca, saya harap ini dapat membantu Anda.