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

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

/**      * 加密      *       * @param content 需要加密的内容      * @param password  加密密码      * @return      */      public static String encrypt(String content, String password) {              try {                        KeyGenerator kgen = KeyGenerator.getInstance("AES");                     /**                     * SecureRandom 实现尝试完全随机化生成器本身的内部状态,                     * 除非调用方在调用 getInstance 方法之后又调用了setSeed 方法                     */                    SecureRandom random=SecureRandom.getInstance("SHA1PRNG");                    random.setSeed(password.getBytes());                    kgen.init(128,random);                      SecretKey secretKey = kgen.generateKey();                      byte[] enCodeFormat = secretKey.getEncoded();                      SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES");                      Cipher cipher = Cipher.getInstance("AES");// 创建密码器                       byte[] byteContent = content.getBytes("utf-8");                      cipher.init(Cipher.ENCRYPT_MODE, key);// 初始化                       byte[] result = cipher.doFinal(byteContent);                      //二进制转换为16                    StringBuffer sb = new StringBuffer();                      for (int i = 0; i < result.length; i++) {                              String hex = Integer.toHexString(result[i] & 0xFF);                              if (hex.length() == 1) {                                      hex = '0' + hex;                              }                              sb.append(hex.toUpperCase());                      }                    return sb.toString(); // 加密             } catch (NoSuchAlgorithmException e) {                      e.printStackTrace();              } catch (NoSuchPaddingException e) {                      e.printStackTrace();              } catch (InvalidKeyException e) {                      e.printStackTrace();              } catch (UnsupportedEncodingException e) {                      e.printStackTrace();              } catch (IllegalBlockSizeException e) {                      e.printStackTrace();              } catch (BadPaddingException e) {                      e.printStackTrace();              }              return null;      }      /**解密      * @param content  待解密内容      * @param password 解密密钥      * @return      */      public static byte[] decrypt(String content, String password) {              try {                          //转换为2禁止                    if(content==null)                        return null;                     if (content.length() < 1)                              return null;                      byte[] con = new byte[content.length()/2];                      for (int i = 0;i< content.length()/2; i++) {                              int high = Integer.parseInt(content.substring(i*2, i*2+1), 16);                              int low = Integer.parseInt(content.substring(i*2+1, i*2+2), 16);                              con[i] = (byte) (high * 16 + low);                      }                       KeyGenerator kgen = KeyGenerator.getInstance("AES");                     SecureRandom random=SecureRandom.getInstance("SHA1PRNG");                     random.setSeed(password.getBytes());                     kgen.init(128, random);                       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(con);                      return result; // 加密               } catch (NoSuchAlgorithmException e) {                      e.printStackTrace();              } catch (NoSuchPaddingException e) {                      e.printStackTrace();              } catch (InvalidKeyException e) {                      e.printStackTrace();              } catch (IllegalBlockSizeException e) {                      e.printStackTrace();              } catch (BadPaddingException e) {                      e.printStackTrace();              }              return null;      }

 

转载于:https://www.cnblogs.com/volare/p/5824863.html

你可能感兴趣的文章
网站文章如何能自动判定是抄袭?一种算法和实践架构剖析
查看>>
【OpenCV学习】滚动条
查看>>
ofo用科技引领行业进入4.0时代 用户粘性连续8个月远甩摩拜
查看>>
兰州青年志愿者“中西合璧”玩快闪 温暖旅客回家路
查看>>
计划10年建10万廉价屋 新西兰政府:比想象中难
查看>>
甘肃发首版《3D打印职业教育教材》:校企合作育专才
查看>>
李娜入选国际网球名人堂 成亚洲第一人
查看>>
为找好心人抚养孩子 浙江一离婚父亲将幼童丢弃公园
查看>>
晚婚晚育 近20年巴西35岁以上孕妇增加65%
查看>>
读书:为了那个美妙的咔哒声
查看>>
jsp改造之sitemesh注意事项
查看>>
智能硬件的时代,嵌入式是否已经日薄西山
查看>>
SpringBoot-Shiro使用
查看>>
iOS 9.0之后NSString encode方法替换
查看>>
解决 ThinkPHP5 无法接收 客户端 Post 传递的 Json 参数
查看>>
ASMFD (ASM Filter Driver) Support on OS Platforms (Certification Matrix). (文档 ID 2034681.1)
查看>>
CRM Transaction处理中的权限控制
查看>>
[转]linux创建链接文件的两种方法
查看>>
python ipaddress模块使用
查看>>
文件权限
查看>>