Ada dua kalimat yang mengatakan ini:
1) Algoritma dan struktur data adalah bagian penting dari pemrograman. Jika Anda kehilangan algoritma dan struktur data, Anda akan kehilangan segalanya.
2) Pemrograman adalah algoritma dan struktur data, dan algoritma dan struktur data adalah jiwa pemrograman.
Perhatikan bahwa ini bukan yang saya katakan, itu dirangkum oleh pemrogram yang tak terhitung jumlahnya. Ini sangat realistis dan berwawasan luas. Jika Anda ingin berkembang terus menerus untuk waktu yang lama, masih perlu mempelajari lebih banyak algoritma. Hari ini saya akan memberi tahu Anda tentang algoritma enkripsi simetris dalam algoritma enkripsi, dan di sini saya akan mengajari Anda pemrograman dan penggunaan algoritma enkripsi simetris. 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. Untuk sebagian besar algoritma kriptografi simetris, proses enkripsi dan dekripsi terkait terbalik.
(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"); // Pulihkan kunci cipher cipher = cipher.getInstance ("des"); // cipher menyelesaikan enkripsi atau dekripsi kelas pekerja cipher.init (cipher.encrypt_mode, Secretkey);//menginisialisasi cipher, encrytion bye = cipe = secretkey);//inisialisasi cipher, encrypyption bye = secretkey);/inisialisasi cipher, encryption bye = cipe = secretkey);//inisialisasi cipher, encryption byePere [] CIPHERE);//menginisialisasi cipher, encryption bye = cipe = secretkey);) cipher.dofinal (data); // Mengenkripsi data3) Dekripsi
SecretKey secretKey = new SecretKeySpec(key, "DES");//Recover key Cipher cipher = Cipher.getInstance("DES");//Cipher completes encryption or decrypts working class cipher.init(Cipher.DECRYPT_MODE, secretKey);//Initializes Cipher, decrypts mode byte[] cipherByte = cipher.dofinal (data); // mendekripsi 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); // Panjang kunci dapat ditentukan sebagai 112 atau 168, dan standarnya adalah 168. Secretkey Secretkey = keygen.generateKey (); // menghasilkan byte kunci [] key = secretkey.getEncoded (); // array byte kunci byte key2) Enkripsi 3des
SecretKey secretKey = new SecretKeySpec(key, "DESede");//Recover key Cipher cipher = Cipher.getInstance("DESede");//Cipher completes encryption or decryption of working class cipher.init(Cipher.ENCRYPT_MODE, secretKey);//Initializes Cipher, decrypts mode byte[] cipherByte = cipher.dofinal (data); // Mengenkripsi data3) Dekripsi 3des
SecretKey secretKey = new SecretKeySpec(key, "DESede");//Recover key Cipher cipher = Cipher.getInstance("DESede");//Cipher completes encryption or decryption of working class cipher.init(Cipher.DECRYPT_MODE, secretKey);//Initializes Cipher, decrypts mode byte[] cipherByte = cipher.dofinal (data); // mendekripsi data4. 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); // Default 128, Setelah tidak mendapatkan izin kebijakan, itu bisa 192 atau 256SecretKey Secretkey = keygen.generateKey (); // menghasilkan byte kunci [] key = Secretkey.getEncoded (); // Key byte array byte array2) Enkripsi AES
SecretKey Secretkey = SecretKeySpec baru (kunci, "AES"); // Kunci pemulihan Cipher cipher = cipher.getInstance ("AES"); // Cipher menyelesaikan enkripsi atau dekripsi kelas pekerja Cipher.init (cipher.encrypt_mode, SecretKey); // menginisialisasi cipher, decry. cipher.dofinal (data); // Mengenkripsi data3) Dekripsi AES
SecretKey secretKey = new SecretKeySpec(key, "AES");//Recover key Cipher cipher = Cipher.getInstance("AES");//Cipher completes encryption or decryption of working class cipher.init(Cipher.DECRYPT_MODE, secretKey);//Initializes Cipher, decrypts mode byte[] cipherByte = cipher.dofinal (data); // mendekripsi dataUntuk kenyamanan penggunaan, saya memiliki kelas alat tertulis untuk algoritma DES/3DES/AES, Alamat: Alamat Unduh (kelas alat DES/3DES/AES baru).
Pada titik ini, tiga algoritma DES/3DES/AES semuanya dilakukan untuk mengimplementasikan enkripsi simetris. Saya berharap ini akan membantu untuk pembelajaran semua orang, dan saya harap semua orang akan lebih mendukung wulin.com.