博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
AES加密解密
阅读量:5070 次
发布时间:2019-06-12

本文共 3469 字,大约阅读时间需要 11 分钟。

1 import java.security.SecureRandom;  2   3 import javax.crypto.Cipher;  4 import javax.crypto.KeyGenerator;  5 import javax.crypto.SecretKey;  6 import javax.crypto.spec.SecretKeySpec;  7   8 /**  9  * AES加密 10  * 11  */ 12 public class AESUtils { 13  14   /** 15    * 解密 16    * 17    * @param content 待解密内容 18    * @param password 解密密钥 19    * @return 20    */ 21   public static byte[] decrypt(byte[] content, String password) { 22     try { 23       KeyGenerator kgen = KeyGenerator.getInstance("AES"); 24       kgen.init(128, new SecureRandom(password.getBytes())); 25       SecretKey secretKey = kgen.generateKey(); 26       byte[] enCodeFormat = secretKey.getEncoded(); 27       SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES"); 28       Cipher cipher = Cipher.getInstance("AES");// 创建密码器 29       cipher.init(Cipher.DECRYPT_MODE, key);// 初始化 30       byte[] result = cipher.doFinal(content); 31       return result; // 加密 32     } 33     catch (Exception e) { 34       e.printStackTrace(); 35     } 36     return null; 37   } 38  39   public static byte[] encrypt(String content, String password) { 40     try { 41       KeyGenerator kgen = KeyGenerator.getInstance("AES"); 42       kgen.init(128, new SecureRandom(password.getBytes())); 43       SecretKey secretKey = kgen.generateKey(); 44       byte[] enCodeFormat = secretKey.getEncoded(); 45       SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES"); 46       Cipher cipher = Cipher.getInstance("AES");// 创建密码器 47       byte[] byteContent = content.getBytes("utf-8"); 48       cipher.init(Cipher.ENCRYPT_MODE, key);// 初始化 49       byte[] result = cipher.doFinal(byteContent); 50       return result; // 加密 51     } 52     catch (Exception e) { 53       e.printStackTrace(); 54     } 55     return null; 56   } 57  58   public static void main(String[] args) { 59     String content = "给我加密把"; 60     String password = "这是加密密钥"; 61     // 加密 62     System.out.println("加密前:" + content); 63     byte[] encryptResult = AESUtils.encrypt(content, password); 64     String encryptResultStr = AESUtils.parseByte2HexStr(encryptResult); 65     System.out.println("加密后:" + encryptResultStr); 66     // 解密 67     byte[] decryptFrom = AESUtils.parseHexStr2Byte(encryptResultStr); 68     byte[] decryptResult = AESUtils.decrypt(decryptFrom, password); 69     System.out.println("解密后:" + new String(decryptResult)); 70   } 71  72   /** 73    * 将二进制转换成16进制 74    * 75    * @param buf 76    * @return 77    */ 78   public static String parseByte2HexStr(byte buf[]) { 79     StringBuffer sb = new StringBuffer(); 80     for (int i = 0; i < buf.length; i++) { 81       String hex = Integer.toHexString(buf[i] & 0xFF); 82       if (hex.length() == 1) { 83         hex = '0' + hex; 84       } 85       sb.append(hex.toUpperCase()); 86     } 87     return sb.toString(); 88   } 89  90   /** 91    * 将16进制转换为二进制 92    * 93    * @param hexStr 94    * @return 95    */ 96   public static byte[] parseHexStr2Byte(String hexStr) { 97     if (hexStr.length() < 1) { 98       return null; 99     }100     byte[] result = new byte[hexStr.length() / 2];101     for (int i = 0; i < hexStr.length() / 2; i++) {102       int high = Integer.parseInt(hexStr.substring(i * 2, i * 2 + 1), 16);103       int low = Integer.parseInt(hexStr.substring(i * 2 + 1, i * 2 + 2), 16);104       result[i] = (byte) (high * 16 + low);105     }106     return result;107   }108 }

运行结果:

 

转载于:https://www.cnblogs.com/zanderblogs/p/7560296.html

你可能感兴趣的文章
app与后台的token、sessionId、RSA加密登录认证与安全解决方案
查看>>
Java 基础
查看>>
Nancy总结(一)Nancy一个轻量的MVC框架
查看>>
关于软件工程的理解
查看>>
Git学习笔记(1)——安装,配置,创建库,文件添加到库
查看>>
mysql 用户管理和权限设置
查看>>
软件安全2.找到文件所占簇号(windows)
查看>>
解决文件夹无限嵌套无法删除的问题---最新办法
查看>>
线程的两种睡眠方法&ANR(进程/服务无响应)
查看>>
自然语言处理
查看>>
三元表达式/列表推导/生成器表达式
查看>>
Groovy基本语法
查看>>
关于selenium IDE找不到元素
查看>>
adb(12)-查看连接过的 WiFi 密码
查看>>
Mysql临时表
查看>>
Ext.Ajax.request 使用示例
查看>>
Java GC机制简要总结(Java垃圾回收的基本工作原理)
查看>>
以Self Host的方式来寄宿Web API
查看>>
2018年东北农业大学春季校赛 I-wyh的物品(二分查找)
查看>>
IE下ul li 互相嵌套时候的bug,排查,解决过程及心得
查看>>