Rumah  >  Artikel  >  Java  >  kriptografi penyulitan simetri dalam Java

kriptografi penyulitan simetri dalam Java

WBOY
WBOYke hadapan
2023-09-13 15:49:021371semak imbas

kriptografi penyulitan simetri dalam Java

Pengenalan

Penyulitan simetri, juga dikenali sebagai penyulitan kunci, ialah kaedah penyulitan di mana kunci yang sama digunakan untuk penyulitan dan penyahsulitan. Kaedah penyulitan ini adalah pantas dan cekap serta sesuai untuk menyulitkan sejumlah besar data. Algoritma penyulitan simetri yang paling biasa digunakan ialah Advanced Encryption Standard (AES).

Java menyediakan sokongan kuat untuk penyulitan simetri, termasuk kelas dalam pakej javax.crypto, seperti SecretKey, Cipher dan KeyGenerator.

Penyulitan simetri dalam Java

Kelas Java Cipher dalam pakej javax.crypto menyediakan fungsi kriptografi untuk penyulitan dan penyahsulitan. Ia membentuk teras rangka kerja Java Cryptozoology Extensions (JCE).

Di Java, kelas Cipher menyediakan fungsi penyulitan simetri, dan kelas KeyGenerator digunakan untuk menjana kunci untuk penyulitan simetri.

Terjemahan bahasa Cina bagi

Contoh

ialah:

Contoh

Mari kita lihat contoh penyulitan simetri mudah AES yang dilaksanakan dalam Java−

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import java.nio.charset.StandardCharsets;
import java.util.Base64;

public class Main {
   public static void main(String[] args) throws Exception {

      // Generate key
      SecretKey secretKey = KeyGenerator.getInstance("AES").generateKey();
   
      // Original message
      String originalMessage = "Hello, world!";
   
      // Create Cipher instance and initialize it to ENCRYPT_MODE
      Cipher cipher = Cipher.getInstance("AES");
      cipher.init(Cipher.ENCRYPT_MODE, secretKey);
   
      // Encrypt the message
      byte[] encryptedMessage = cipher.doFinal(originalMessage.getBytes(StandardCharsets.UTF_8));
   
      // Convert the encrypted message to Base64 encoded string
      String encodedMessage = Base64.getEncoder().encodeToString(encryptedMessage);
   
      System.out.println("Original Message: " + originalMessage);
      System.out.println("Encrypted Message: " + encodedMessage);
   
      // Reinitialize the cipher to DECRYPT_MODE
      cipher.init(Cipher.DECRYPT_MODE, secretKey);
   
      // Decrypt the message
      byte[] decryptedMessage = cipher.doFinal(Base64.getDecoder().decode(encodedMessage));
   
      System.out.println("Decrypted Message: " + new String(decryptedMessage, StandardCharsets.UTF_8));
   }
}

Output

Apabila anda menjalankan program, anda akan melihat output yang serupa dengan yang berikut -

Original Message: Hello, world!
Encrypted Message: iWohhm/c89uBVaJ3j4YFkA==
Decrypted Message: Hello, world!
Terjemahan bahasa Cina bagi

Penjelasan

ialah:

Penjelasan

Dalam kod di atas, kami mula-mula menjana kunci rahsia untuk penyulitan AES menggunakan kelas KeyGenerator.

Kemudian kami mencipta contoh kelas Cipher untuk AES dan memulakannya kepada ENCRYPT_MODE menggunakan kunci rahsia.

Seterusnya, kami mentakrifkan mesej mentah "Helo, dunia!" dan menyulitkannya menggunakan kaedah doFinal Cipher. Kami juga menukar bait mesej yang disulitkan kepada rentetan yang dikodkan Base64 untuk memudahkan proses.

Kemudian kami mencetak mesej asal dan mesej yang disulitkan ke konsol.

Untuk menunjukkan penyahsulitan, kami menggunakan kekunci yang sama untuk memulakan semula kata laluan kepada DECRYPT_MODE dan menyahsulit mesej yang disulitkan. Akhirnya, kami mencetak mesej yang dinyahsulit ke konsol.

Memandangkan kunci rahsia unik dijana setiap kali anda menjalankan program, mesej yang disulitkan akan berbeza setiap kali.

Perkara penting untuk diperhatikan di sini ialah mesej yang dinyahsulit adalah sama dengan mesej asal, yang menunjukkan bahawa proses penyulitan dan penyahsulitan kami berfungsi dengan baik.

Titik untuk diingat

Penyulitan simetri ialah alat yang berkuasa untuk mengekalkan kerahsiaan, tetapi penting untuk diingat bahawa data anda hanya selamat seperti kunci anda. Jika orang yang tidak dibenarkan mendapatkan kunci rahsia anda, mereka boleh menyahsulit data anda. Oleh itu, adalah penting untuk memastikan kunci rahsia selamat.

Kesimpulan

Melaksanakan penyulitan simetri dalam Java adalah proses yang mudah, terima kasih kepada pakej javax.crypto. Memahami cara menggunakan kelas Cipher dan KeyGenerator untuk menyulitkan dan menyahsulit data boleh meningkatkan keselamatan aplikasi Java anda dengan ketara.

Atas ialah kandungan terperinci kriptografi penyulitan simetri dalam Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam