用java写一个aes加密解密算法,用户输入的密匙和明文,或者用户输入密文,解密
时间: 2024-09-09 08:01:56 浏览: 46
AES加密算法是一种高级加密标准,它是一种对称加密算法,即加密和解密使用相同的密钥。Java中提供了javax.crypto包来实现AES加密和解密。用户可以通过输入明文和密钥来进行加密,也可以通过输入密文和密钥来进行解密。以下是实现AES加密和解密的步骤:
1. 导入javax.crypto包。
2. 创建一个SecretKeySpec对象,用于存储密钥。
3. 创建一个Cipher对象,用于加密或解密数据。
4. 初始化Cipher对象,设置加密或解密模式和密钥。
5. 对数据进行加密或解密操作。
6. 返回加密或解密后的结果。
下面是一个简单的Java代码示例,用于实现AES加密和解密:
```
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import java.util.Base64;
public class AES {
private static final String ALGORITHM = "AES";
private static final String TRANSFORMATION = "AES/ECB/PKCS5Padding";
private static final String CHARSET = "UTF-8";
public static String encrypt(String plainText, String key) throws Exception {
SecretKeySpec secretKey = new SecretKeySpec(key.getBytes(CHARSET), ALGORITHM);
Cipher cipher = Cipher.getInstance(TRANSFORMATION);
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
byte[] cipherText = cipher.doFinal(plainText.getBytes(CHARSET));
return Base64.getEncoder().encodeToString(cipherText);
}
public static String decrypt(String cipherText, String key) throws Exception {
SecretKeySpec secretKey = new SecretKeySpec(key.getBytes(CHARSET), ALGORITHM);
Cipher cipher = Cipher.getInstance(TRANSFORMATION);
cipher.init(Cipher.DECRYPT_MODE, secretKey);
byte[] plainText = cipher.doFinal(Base64.getDecoder().decode(cipherText));
return new String(plainText, CHARSET);
}
}
```
用户可以通过调用encrypt方法来加密明文,或者通过调用decrypt方法来解密密文。需要注意的是,密钥的长度必须是16、24或32个字节,否则会抛出异常。
阅读全文