在Java中,可以使用java.security
包提供的類來實現非對稱加密算法。常用的非對稱加密算法有RSA算法。
以下是一個簡單的示例代碼,演示如何使用RSA算法進行非對稱加密和解密:
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.Security;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
import javax.crypto.Cipher;
public class AsymmetricEncryptionExample {
public static void main(String[] args) throws Exception {
// 生成RSA密鑰對
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
keyPairGenerator.initialize(2048);
KeyPair keyPair = keyPairGenerator.generateKeyPair();
PublicKey publicKey = keyPair.getPublic();
PrivateKey privateKey = keyPair.getPrivate();
// 加密數據
byte[] data = "Hello, World!".getBytes();
byte[] encryptedData = encrypt(data, publicKey);
System.out.println("Encrypted data: " + new String(encryptedData));
// 解密數據
byte[] decryptedData = decrypt(encryptedData, privateKey);
System.out.println("Decrypted data: " + new String(decryptedData));
}
public static byte[] encrypt(byte[] data, PublicKey publicKey) throws Exception {
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
return cipher.doFinal(data);
}
public static byte[] decrypt(byte[] data, PrivateKey privateKey) throws Exception {
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.DECRYPT_MODE, privateKey);
return cipher.doFinal(data);
}
}
這段代碼首先生成RSA密鑰對,然后使用公鑰對數據進行加密,再使用私鑰對加密后的數據進行解密。最后打印出解密后的數據。
需要注意的是,這里使用的是RSA算法,密鑰長度為2048位。在實際應用中,應該根據數據的安全性需求選擇合適的密鑰長度。