AES加密解密
程序员文章站
2022-06-21 21:00:21
...
AES实现加密解密的功能:
import java.security.SecureRandom; import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; public class EncryptDecrypt { /** * 加密 * * @param content * 需要加密的内容 * @param password * 加密密码 * @return */ public static byte[] encrypt(String content, String password) { byte[] result; try { //指定一个算法生成KeyGenerator对象,这里使用 AES 算法 KeyGenerator kgen = KeyGenerator.getInstance("AES"); //SecureRandom,此类提供加密的强随机数生成器 //用指定参数集和用户提供的随机源初始化此密钥生成器 kgen.init(128, new SecureRandom(password.getBytes())); //kgen.generateKey()生成一个密钥 SecretKey secretKey = kgen.generateKey(); //返回基本编码格式的密钥,如果此密钥不支持编码,则返回 null byte[] enCodeFormat = secretKey.getEncoded(); //根据给定的字节数组构造一个密钥 SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES"); //生成一个实现指定转换的 Cipher 对象 Cipher cipher = Cipher.getInstance("AES");// 创建密码器 byte[] byteContent = content.getBytes("utf-8"); //用密钥初始化此 cipher cipher.init(Cipher.ENCRYPT_MODE, key); //按单部分操作加密或解密数据,或者结束一个多部分操作,数据被加密还是解密取决于此 cipher 的初始化方式 result = cipher.doFinal(byteContent); System.out.println("======"+result.toString()); return result; // 加密,生成密钥内容 } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } /** * 解密 * * @param content * 待解密内容 * @param password * 解密密钥 * @return */ public static byte[] decrypt(byte[] content, String password) { try { KeyGenerator kgen = KeyGenerator.getInstance("AES"); kgen.init(128, new SecureRandom(password.getBytes())); SecretKey secretKey = kgen.generateKey(); byte[] enCodeFormat = secretKey.getEncoded(); SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES"); Cipher cipher = Cipher.getInstance("AES");// 创建密码器 cipher.init(Cipher.DECRYPT_MODE, key);// 初始化 byte[] result = cipher.doFinal(content); return result; // 加密 } catch (Exception e) { e.printStackTrace(); } return null; } public static void main(String[] args) { String content = "so good"; String password = "12345678"; // 加密 System.out.println("加密前:" + content); byte[] encryptResult = encrypt(content, password); // 解密 byte[] decryptResult = decrypt(encryptResult, password); System.out.println("解密后:" + new String(decryptResult)); } }
上一篇: 数据库中如何写联表查询的sql?
下一篇: 螺蛳粉的螺蛳是什么?怎么煮才好吃?