Cara melakukan penyulitan dan penyahsulitan data untuk pembangunan fungsi Java
Penyulitan dan penyahsulitan data memainkan peranan penting dalam bidang keselamatan maklumat. Dalam pembangunan Java, terdapat banyak cara untuk melaksanakan fungsi penyulitan dan penyahsulitan data. Artikel ini akan memperkenalkan kaedah penyulitan dan penyahsulitan data menggunakan bahasa pengaturcaraan Java dan memberikan contoh kod.
1. Algoritma penyulitan simetri
Algoritma penyulitan simetri menggunakan kunci yang sama untuk menyulitkan dan menyahsulit data. Algoritma penyulitan simetri yang biasa digunakan termasuk DES, 3DES, AES, dsb.
Contoh kod:
import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; import java.security.SecureRandom; import java.util.Base64; public class SymmetricEncryptionExample { public static void main(String[] args) throws Exception { String plaintext = "Hello, World!"; String secretKey = "0123456789abcdef"; // Generate Key SecretKey key = new SecretKeySpec(secretKey.getBytes(), "AES"); // Create Cipher Cipher cipher = Cipher.getInstance("AES"); // Encrypt cipher.init(Cipher.ENCRYPT_MODE, key); byte[] encryptedBytes = cipher.doFinal(plaintext.getBytes()); String encryptedText = Base64.getEncoder().encodeToString(encryptedBytes); System.out.println("Encrypted Text: " + encryptedText); // Decrypt cipher.init(Cipher.DECRYPT_MODE, key); byte[] decryptedBytes = cipher.doFinal(Base64.getDecoder().decode(encryptedText)); String decryptedText = new String(decryptedBytes); System.out.println("Decrypted Text: " + decryptedText); } }
2. Algoritma penyulitan asimetri
Algoritma penyulitan asimetri menggunakan sepasang kunci, kunci awam digunakan untuk penyulitan dan kunci peribadi digunakan untuk penyahsulitan. Di Java, algoritma penyulitan asimetri yang biasa digunakan ialah RSA.
Contoh kod:
import javax.crypto.Cipher; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.PrivateKey; import java.security.PublicKey; import java.util.Base64; public class AsymmetricEncryptionExample { public static void main(String[] args) throws Exception { String plaintext = "Hello, World!"; // Generate Key Pair KeyPairGenerator keyGenerator = KeyPairGenerator.getInstance("RSA"); keyGenerator.initialize(2048); KeyPair keyPair = keyGenerator.generateKeyPair(); PublicKey publicKey = keyPair.getPublic(); PrivateKey privateKey = keyPair.getPrivate(); // Create Cipher Cipher cipher = Cipher.getInstance("RSA"); // Encrypt cipher.init(Cipher.ENCRYPT_MODE, publicKey); byte[] encryptedBytes = cipher.doFinal(plaintext.getBytes()); String encryptedText = Base64.getEncoder().encodeToString(encryptedBytes); System.out.println("Encrypted Text: " + encryptedText); // Decrypt cipher.init(Cipher.DECRYPT_MODE, privateKey); byte[] decryptedBytes = cipher.doFinal(Base64.getDecoder().decode(encryptedText)); String decryptedText = new String(decryptedBytes); System.out.println("Decrypted Text: " + decryptedText); } }
3 Algoritma cincang
Algoritma cincang boleh menukar data apa-apa panjang kepada nilai cincang panjang tetap yang biasa digunakan termasuk MD5, SHA-1, SHA-256, dsb.
Sampel kod:
import java.security.MessageDigest; public class HashAlgorithmExample { public static void main(String[] args) throws Exception { String plaintext = "Hello, World!"; // Create MessageDigest MessageDigest md = MessageDigest.getInstance("SHA-256"); // Hash byte[] hashedBytes = md.digest(plaintext.getBytes()); StringBuilder stringBuilder = new StringBuilder(); for (byte hashedByte : hashedBytes) { stringBuilder.append(Integer.toHexString(0xFF & hashedByte)); } String hashedText = stringBuilder.toString(); System.out.println("Hashed Text: " + hashedText); } }
Ringkasan:
Artikel ini memperkenalkan kaedah dan contoh kod menggunakan Java untuk membangunkan dan melaksanakan penyulitan dan penyahsulitan data. Dalam pembangunan sebenar, algoritma penyulitan yang sesuai dan panjang kunci dipilih mengikut keperluan yang berbeza untuk memastikan keselamatan data.
Atas ialah kandungan terperinci Cara melaksanakan penyulitan dan penyahsulitan data untuk pembangunan fungsi Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!