在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。