java.security.InvalidKeyException: Invalid AES key length: 64 bytes
时间: 2024-01-03 20:21:37 浏览: 35
这个异常是因为AES密钥的长度不正确导致的。AES密钥的长度只能是16、24或32个字节(即128位、192位或256位)。如果密钥长度不是这些值,则会抛出此异常。
如果你想使用64字节的密钥,可以考虑使用其他加密算法,例如RSA。RSA可以使用更长的密钥,通常使用2048位或4096位的密钥长度。
以下是一个使用RSA加密和解密的例子:
```java
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.PublicKey;
import javax.crypto.Cipher;
public class RSAExample {
public static void main(String[] args) throws Exception {
// 生成公钥和私钥
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
keyPairGenerator.initialize(2048);
KeyPair keyPair = keyPairGenerator.generateKeyPair();
PublicKey publicKey = keyPair.getPublic();
PrivateKey privateKey = keyPair.getPrivate();
// 加密数据
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
byte[] encryptedData = cipher.doFinal("Hello, world!".getBytes());
// 解密数据
cipher.init(Cipher.DECRYPT_MODE, privateKey);
byte[] decryptedData = cipher.doFinal(encryptedData);
System.out.println(new String(decryptedData));
}
}
```