Java公钥密码算法的实现
时间: 2023-08-06 17:04:39 浏览: 40
Java中提供了多种公钥密码算法的实现方式,常见的有RSA和DSA。
RSA算法的实现:
1. 生成密钥对
```java
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
keyPairGenerator.initialize(2048);
KeyPair keyPair = keyPairGenerator.generateKeyPair();
PublicKey publicKey = keyPair.getPublic();
PrivateKey privateKey = keyPair.getPrivate();
```
2. 加密数据
```java
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
byte[] encryptedData = cipher.doFinal(plainText.getBytes());
```
3. 解密数据
```java
cipher.init(Cipher.DECRYPT_MODE, privateKey);
byte[] decryptedData = cipher.doFinal(encryptedData);
```
DSA算法的实现:
1. 生成密钥对
```java
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("DSA");
keyPairGenerator.initialize(1024);
KeyPair keyPair = keyPairGenerator.generateKeyPair();
PublicKey publicKey = keyPair.getPublic();
PrivateKey privateKey = keyPair.getPrivate();
```
2. 签名数据
```java
Signature signature = Signature.getInstance("DSA");
signature.initSign(privateKey);
signature.update(plainText.getBytes());
byte[] signatureData = signature.sign();
```
3. 验证签名
```java
signature.initVerify(publicKey);
signature.update(plainText.getBytes());
boolean isVerified = signature.verify(signatureData);
```