在Java中,可以使用KeyPairGenerator
類生成密鑰對,然后使用Cipher
類進行加密和解密操作。這里是一個簡單的示例,展示了如何使用Java進行非對稱密鑰交換(例如RSA):
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
public class KeyExchange {
public static void main(String[] args) {
try {
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
keyPairGenerator.initialize(2048);
KeyPair keyPair = keyPairGenerator.generateKeyPair();
System.out.println("Private Key: " + keyPair.getPrivate());
System.out.println("Public Key: " + keyPair.getPublic());
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
}
}
import java.security.PublicKey;
import java.util.Base64;
public class KeyExchange {
// ... 生成密鑰對的代碼
public static String encryptData(String data, PublicKey publicKey) {
try {
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
byte[] encryptedBytes = cipher.doFinal(data.getBytes());
return Base64.getEncoder().encodeToString(encryptedBytes);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
import java.security.PrivateKey;
import java.util.Base64;
public class KeyExchange {
// ... 生成密鑰對的代碼
public static String decryptData(String encryptedData, PrivateKey privateKey) {
try {
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.DECRYPT_MODE, privateKey);
byte[] decryptedBytes = cipher.doFinal(Base64.getDecoder().decode(encryptedData));
return new String(decryptedBytes);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
現在,你可以使用這些方法進行密鑰交換。請注意,為了確保安全性,密鑰交換通常在安全通道上進行,例如SSL/TLS。在實際應用中,建議使用更安全的密鑰交換算法,如Diffie-Hellman或ECDHE。