Java –非对称密码示例
时间: 2023-10-28 10:06:15 浏览: 74
以下是Java中使用非对称密码的示例:
```java
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.PublicKey;
import javax.crypto.Cipher;
public class AsymmetricEncryptionExample {
public static void main(String[] args) throws Exception {
// Generate key pair
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
keyPairGenerator.initialize(2048);
KeyPair keyPair = keyPairGenerator.genKeyPair();
PrivateKey privateKey = keyPair.getPrivate();
PublicKey publicKey = keyPair.getPublic();
// Message to be encrypted
String message = "Hello world!";
// Encryption
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
byte[] encryptedMessage = cipher.doFinal(message.getBytes());
// Decryption
cipher.init(Cipher.DECRYPT_MODE, privateKey);
byte[] decryptedMessage = cipher.doFinal(encryptedMessage);
// Print results
System.out.println("Original message: " + message);
System.out.println("Encrypted message: " + new String(encryptedMessage));
System.out.println("Decrypted message: " + new String(decryptedMessage));
}
}
```
上述代码中,我们使用RSA算法生成一个2048位的公钥和私钥对,并使用公钥加密一条消息,然后使用私钥解密该消息。注意,这里使用的Cipher实例是"RSA",因为我们使用的是RSA算法。如果我们使用其他算法,例如DSA或ECDSA,我们需要使用相应的Cipher实例。
阅读全文