AES工具类

AES加密:

  1. 简介:高级加密标准(英语:Advanced Encryption
    Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPSPUB 197,并在2002年5月26日成为有效的标准。2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一。
    Android中有的地方会使用到AES加密、解密,根据自己的项目需求,废话不多述,咱直接上代码

  2. AESUtils

/** 
     * 加密 
    *  
     * @param content 需要加密的内容 
    * @param password  加密密码 
    * @return 
     */   
    public static byte[] encrypt(String content, String password) {   
            try {              
                    KeyGenerator kgen = KeyGenerator.getInstance("AES");   
                    SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");
                    secureRandom.setSeed(password.getBytes());   
                    kgen.init(128, secureRandom);   
                    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);   
                    return result; // 加密   
            } 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(byte[] content, String password) {   
             try {   
                      KeyGenerator kgen = KeyGenerator.getInstance("AES");
                      SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");
                      secureRandom.setSeed(password.getBytes());
                      kgen.init(128, secureRandom);   
                      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 (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;   
     }  

其中还用到了几个函数方法,在此贴出


     /**将二进制转换成16进制 
      * @param buf 
       * @return 
       */   
      public static String parseByte2HexStr(byte buf[]) {   
              StringBuffer sb = new StringBuffer();   
              for (int i = 0; i < buf.length; i++) {   
                      String hex = Integer.toHexString(buf[i] & 0xFF);   
                      if (hex.length() == 1) {   
                              hex = '0' + hex;   
                      }   
                      sb.append(hex.toUpperCase());   
              }   
              return sb.toString();   
     }   


      /**将16进制转换为二进制 
       * @param hexStr 
        * @return 
        */   
       public static byte[] parseHexStr2Byte(String hexStr) {   
               if (hexStr.length() < 1)   
                       return null;   
               byte[] result = new byte[hexStr.length()/2];   
               for (int i = 0;i< hexStr.length()/2; i++) {   
                       int high = Integer.parseInt(hexStr.substring(i*2, i*2+1), 16);   
                       int low = Integer.parseInt(hexStr.substring(i*2+1, i*2+2), 16);   
                       result[i] = (byte) (high * 16 + low);   
               }   
               return result;   
       }   
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值