2012年3月11日星期日

对象序列反序列化AES加密后Base64处理


  1. /** 
  2.  * AES加密 
  3.  * @param content 需要加密的内容 * 
  4.  * @param key 加密密码 * 
  5.  * @return 
  6.  */  
  7. public static byte[] encrypt(byte[] content, String key) {  
  8.     try {  
  9.         KeyGenerator kgen = KeyGenerator.getInstance("AES");  
  10.         kgen.init(128new SecureRandom(key.getBytes()));  
  11.         SecretKey secretKey = kgen.generateKey();  
  12.         byte[] enCodeFormat = secretKey.getEncoded();  
  13.         SecretKeySpec keySpec = new SecretKeySpec(enCodeFormat, "AES");  
  14.         Cipher cipher = Cipher.getInstance("AES");// 创建密码器  
  15.         byte[] byteContent = content;  
  16.         cipher.init(Cipher.ENCRYPT_MODE, keySpec);// 初始化  
  17.         byte[] result = cipher.doFinal(byteContent);  
  18.         return result; // 加密  
  19.     } catch (NoSuchAlgorithmException e) {  
  20.         e.printStackTrace();  
  21.     } catch (NoSuchPaddingException e) {  
  22.         e.printStackTrace();  
  23.     } catch (InvalidKeyException e) {  
  24.         e.printStackTrace();  
  25.     } catch (IllegalBlockSizeException e) {  
  26.         e.printStackTrace();  
  27.     } catch (BadPaddingException e) {  
  28.         e.printStackTrace();  
  29.     }  
  30.     return null;  
  31. }  
  32. /** 
  33.  * AES解密  
  34.  * @param content  待解密内容 
  35.  * @param key解密密钥 
  36.  * @return 
  37.  */  
  38. public static byte[] decrypt(byte[] content, String key) {  
  39.     try {  
  40.         KeyGenerator kgen = KeyGenerator.getInstance("AES");  
  41.         kgen.init(128new SecureRandom(key.getBytes()));  
  42.         SecretKey secretKey = kgen.generateKey();  
  43.         byte[] enCodeFormat = secretKey.getEncoded();  
  44.         SecretKeySpec keySpec = new SecretKeySpec(enCodeFormat, "AES");  
  45.         Cipher cipher = Cipher.getInstance("AES");// 创建密码器  
  46.         cipher.init(Cipher.DECRYPT_MODE, keySpec);// 初始化  
  47.         byte[] result = cipher.doFinal(content);  
  48.         return result; // 加密  
  49.     } catch (NoSuchAlgorithmException e) {  
  50.         e.printStackTrace();  
  51.     } catch (NoSuchPaddingException e) {  
  52.         e.printStackTrace();  
  53.     } catch (InvalidKeyException e) {  
  54.         e.printStackTrace();  
  55.     } catch (IllegalBlockSizeException e) {  
  56.         e.printStackTrace();  
  57.     } catch (BadPaddingException e) {  
  58.         e.printStackTrace();  
  59.     }  
  60.     return null;  
  61. }   
  62. /** 
  63.  * 对象转换成字串  
  64.  */  
  65. public static String object2String(Object o) throws Exception {  
  66.     ByteArrayOutputStream baos = new ByteArrayOutputStream();  
  67.     ObjectOutputStream oos = new ObjectOutputStream(baos);  
  68.     oos.writeObject(o);  
  69.     byte[] byteArray = baos.toByteArray();    
  70.     byteArray = encrypt(byteArray,key);   
  71.     String str = Base64.encode(byteArray);  
  72.         return str;  
  73. }  
  74. /** 
  75.  * 字串转换成对象  
  76.  */   
  77. public static Object string2Object(String info) throws Exception {  
  78.     byte[] byteArray = Base64.decode(info);   
  79.     byteArray = decrypt(byteArray,key);   
  80.     ByteArrayInputStream bais = new ByteArrayInputStream(byteArray);  
  81.     ObjectInputStream ois = new ObjectInputStream(bais);  
  82.     return ois.readObject();  
  83. }  

没有评论:

发表评论