KeyPairGenerator 获取对称加密密钥
时间: 2024-05-03 19:22:49 浏览: 126
KeyPairGenerator 不是用于获取对称加密密钥的工具,而是用于生成公钥和私钥的工具。对称加密密钥可以使用 KeyGenerator 来生成,例如:
```java
KeyGenerator keyGen = KeyGenerator.getInstance("AES");
keyGen.init(128);
SecretKey secretKey = keyGen.generateKey();
```
这段代码使用 AES 算法生成一个 128 位的对称加密密钥。
相关问题
非对称性密钥加密 java 实例_JAVA实现非对称加密
非对称加密算法是一种常用的加密方式,它采用了一对密钥,即公钥和私钥。公钥是公开的,可以任意分发,而私钥则只能由密钥的所有者持有,用于解密加密数据。常见的非对称加密算法包括RSA、DSA、ECC等。
下面是一个使用RSA算法实现非对称加密的Java示例代码:
```java
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.Signature;
import javax.crypto.Cipher;
public class RSAEncryptionExample {
public static void main(String[] args) throws Exception {
String input = "Hello World!";
KeyPair keyPair = generateRSAKeyPair();
PrivateKey privateKey = keyPair.getPrivate();
PublicKey publicKey = keyPair.getPublic();
byte[] encryptedData = rsaEncrypt(input.getBytes(), publicKey);
byte[] decryptedData = rsaDecrypt(encryptedData, privateKey);
System.out.println("Original data: " + input);
System.out.println("Encrypted data: " + new String(encryptedData));
System.out.println("Decrypted data: " + new String(decryptedData));
}
public static KeyPair generateRSAKeyPair() throws Exception {
KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA");
generator.initialize(2048); // key size
KeyPair keyPair = generator.generateKeyPair();
return keyPair;
}
public static byte[] rsaEncrypt(byte[] data, PublicKey publicKey) throws Exception {
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
byte[] encryptedData = cipher.doFinal(data);
return encryptedData;
}
public static byte[] rsaDecrypt(byte[] data, PrivateKey privateKey) throws Exception {
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.DECRYPT_MODE, privateKey);
byte[] decryptedData = cipher.doFinal(data);
return decryptedData;
}
}
```
这个示例代码中,我们首先生成了一个RSA密钥对,包括公钥和私钥。然后使用公钥对原始数据进行加密,得到加密后的数据。接着使用私钥对加密后的数据进行解密,得到原始数据。
需要注意的是,RSA算法使用的密钥长度越长,安全性就越高,但加解密的速度也越慢。在实际应用中,需要根据实际需求和环境选择合适的密钥长度。
阅读全文