下面是Java AES256加密解密示例代码的完整攻略:
Java AES256加密解密示例代码
什么是AES256加密?
AES256是一种对称加密算法,也就是说加密和解密都使用相同的密钥。AES256使用256位密钥长度,目前被认为是一种非常安全的加密算法。在Java中,可以使用javax.crypto包中的类来实现AES256加密。
AES256加密解密示例
1. 加密
下面是一个将字符串使用AES256加密的示例:
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import java.util.Base64;
public class AesUtil {
public static String encrypt(String data, String key) throws Exception {
byte[] rawData = data.getBytes("UTF-8");
byte[] keyData = key.getBytes("UTF-8");
SecretKey secretKey = new SecretKeySpec(keyData, "AES");
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
byte[] encryptedData = cipher.doFinal(rawData);
return Base64.getEncoder().encodeToString(encryptedData);
}
}
这个示例中,encrypt()方法需要两个参数,第一个是需要加密的字符串,第二个是密钥。使用getBytes()方法将字符串和密钥转换成字节数组,并且使用SecretKeySpec类来生成一个SecretKey对象。然后使用Cipher类的实例来实现加密。在这个示例中,我们使用AES/ECB/PKCS5Padding作为加密模式和填充模式。最后,将加密后的字节数组使用Base64进行编码,并返回字符串类型的加密结果。
2. 解密
下面是一个将AES256加密后的字符串解密的示例:
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import java.util.Base64;
public class AesUtil {
public static String decrypt(String data, String key) throws Exception {
byte[] encryptedData = Base64.getDecoder().decode(data);
byte[] keyData = key.getBytes("UTF-8");
SecretKey secretKey = new SecretKeySpec(keyData, "AES");
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, secretKey);
byte[] decryptedData = cipher.doFinal(encryptedData);
return new String(decryptedData, "UTF-8");
}
}
这个示例的解密方法decrypt()需要两个参数,第一个是需要解密的字符串,第二个是密钥。首先,使用Base64解码出加密后的原始字节数组。然后使用SecretKeySpec类来生成SecretKey对象,使用Cipher类的实例来实现解密。在这个示例中,我们使用AES/ECB/PKCS5Padding作为解密模式和填充模式。最后,将解密后的字节数组转换成字符串类型,返回解密结果。
3. 示例
下面是一个演示如何使用AES256加密解密的示例:
public class Main {
public static void main(String[] args) throws Exception {
String data = "hello, world";
String key = "1234567890abcdef1234567890abcdef";
String encrypted = AesUtil.encrypt(data, key);
System.out.println("Encrypted data: " + encrypted);
String decrypted = AesUtil.decrypt(encrypted, key);
System.out.println("Decrypted data: " + decrypted);
}
}
在这个示例中,我们使用了128位的密钥(32个字节),对字符串"hello, world"进行加密和解密操作。运行这个示例,输出的结果应该如下:
Encrypted data: r5gi6f2R/UJjlkYKl8f2Jw==
Decrypted data: hello, world
4. 总结
在本文中,我们介绍了如何使用Java实现AES256加密解密,包括加密和解密的示例代码。需要注意,在使用AES256加密解密时,需要保证密钥的长度是256位,并且使用合适的加密模式和填充模式。如果密钥长度不足256位,会导致加密结果不安全。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java AES256加密解密示例代码 - Python技术站