Java Base64Utils ----Utils Java Base64Utils

Java Base64Utils

 

Java Base64Utils

7
/**
  * <html>
  * <body>
  *  <P> Copyright 1994 JsonInternational</p>
  *  <p> All rights reserved.</p>
  *  <p> Created on 19941115</p>
  *  <p> Created by Jason</p>
  *  </body>
  * </html>
  */
package  cn.ucaner.alpaca.framework.utils.encrypt;
 
/**
* @Package:cn.ucaner.common.utils.encrypt  
* @ClassName:Base64Utils  
* @Description:   <p> BASE64加解密工具类</p>
* @Author: - Jason
* @CreatTime:2017年10月25日 下午5:49:33  
* @Modify By:  
* @ModifyTime: 
* @Modify marker:  
* @version    V1.0
  */
class  Base64Utils {
 
     private  static  char [] base64EncodeChars =  new  char [] {  'A' 'B' 'C' 'D' ,
             'E' 'F' 'G' 'H' 'I' 'J' 'K' 'L' 'M' 'N' 'O' 'P' 'Q' ,
             'R' 'S' 'T' 'U' 'V' 'W' 'X' 'Y' 'Z' 'a' 'b' 'c' 'd' ,
             'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 'p' 'q' ,
             'r' 's' 't' 'u' 'v' 'w' 'x' 'y' 'z' '0' '1' '2' '3' ,
             '4' '5' '6' '7' '8' '9' '+' '/'  };
 
     private  static  byte [] base64DecodeChars =  new  byte [] { - 1 , - 1 , - 1 , - 1 , - 1 ,
             - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 ,
             - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 ,
             - 1 , - 1 , - 1 , - 1 62 , - 1 , - 1 , - 1 63 52 53 54 55 56 57 58 59 ,
             60 61 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 0 1 2 3 4 5 6 7 8 9 ,
             10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 , - 1 ,
             - 1 , - 1 , - 1 , - 1 , - 1 26 27 28 29 30 31 32 33 34 35 36 37 ,
             38 39 40 41 42 43 44 45 46 47 48 49 50 51 , - 1 , - 1 , - 1 ,
             - 1 , - 1  };
 
     /**
      * BASE64加密
      * @param data
      * @return
      */
     protected  static  String encrypt( byte [] data) {
         StringBuffer sb =  new  StringBuffer();
         int  len = data.length;
         int  i =  0 ;
         int  b1, b2, b3;
         while  (i < len) {
             b1 = data[i++] &  0xff ;
             if  (i == len) {
                 sb.append(base64EncodeChars[b1 >>>  2 ]);
                 sb.append(base64EncodeChars[(b1 &  0x3 ) <<  4 ]);
                 sb.append( "==" );
                 break ;
             }
             b2 = data[i++] &  0xff ;
             if  (i == len) {
                 sb.append(base64EncodeChars[b1 >>>  2 ]);
                 sb.append(base64EncodeChars[((b1 &  0x03 ) <<  4 )
                         | ((b2 &  0xf0 ) >>>  4 )]);
                 sb.append(base64EncodeChars[(b2 &  0x0f ) <<  2 ]);
                 sb.append( "=" );
                 break ;
             }
             b3 = data[i++] &  0xff ;
             sb.append(base64EncodeChars[b1 >>>  2 ]);
             sb.append(base64EncodeChars[((b1 &  0x03 ) <<  4 )
                     | ((b2 &  0xf0 ) >>>  4 )]);
             sb.append(base64EncodeChars[((b2 &  0x0f ) <<  2 )
                     | ((b3 &  0xc0 ) >>>  6 )]);
             sb.append(base64EncodeChars[b3 &  0x3f ]);
         }
         return  sb.toString();
     }
 
     /**
      * Base64 解密
      * @param str
      * @return
      * @throws Exception
      */
     protected  static  byte [] decrypt(String str)  throws  Exception{
         StringBuffer sb =  new  StringBuffer();
         byte [] data =  str.getBytes( "US-ASCII" );
         int  len = data.length;
         int  i =  0 ;
         int  b1, b2, b3, b4;
         while  (i < len) {
 
             do  {
                 b1 = base64DecodeChars[data[i++]];
             while  (i < len && b1 == - 1 );
             if  (b1 == - 1 )
                 break ;
 
             do  {
                 b2 = base64DecodeChars[data[i++]];
             while  (i < len && b2 == - 1 );
             if  (b2 == - 1 )
                 break ;
             sb.append(( char ) ((b1 <<  2 ) | ((b2 &  0x30 ) >>>  4 )));
 
             do  {
                 b3 = data[i++];
                 if  (b3 ==  61 )
                     return  sb.toString().getBytes( "iso8859-1" );
                 b3 = base64DecodeChars[b3];
             while  (i < len && b3 == - 1 );
             if  (b3 == - 1 )
                 break ;
             sb.append(( char ) (((b2 &  0x0f ) <<  4 ) | ((b3 &  0x3c ) >>>  2 )));
 
             do  {
                 b4 = data[i++];
                 if  (b4 ==  61 )
                     return  sb.toString().getBytes( "iso8859-1" );
                 b4 = base64DecodeChars[b4];
             while  (i < len && b4 == - 1 );
             if  (b4 == - 1 )
                 break ;
             sb.append(( char ) (((b3 &  0x03 ) <<  6 ) | b4));
         }
         return  sb.toString().getBytes( "iso8859-1" );
     }
     
      /**
      *For Test By Jason
      */
     public  static  void  main(String[] args) {
         
     }
}

  

分类:  JavaUtils
标签:  java工具

Java Base64Utils

7
/**
  * <html>
  * <body>
  *  <P> Copyright 1994 JsonInternational</p>
  *  <p> All rights reserved.</p>
  *  <p> Created on 19941115</p>
  *  <p> Created by Jason</p>
  *  </body>
  * </html>
  */
package  cn.ucaner.alpaca.framework.utils.encrypt;
 
/**
* @Package:cn.ucaner.common.utils.encrypt  
* @ClassName:Base64Utils  
* @Description:   <p> BASE64加解密工具类</p>
* @Author: - Jason
* @CreatTime:2017年10月25日 下午5:49:33  
* @Modify By:  
* @ModifyTime: 
* @Modify marker:  
* @version    V1.0
  */
class  Base64Utils {
 
     private  static  char [] base64EncodeChars =  new  char [] {  'A' 'B' 'C' 'D' ,
             'E' 'F' 'G' 'H' 'I' 'J' 'K' 'L' 'M' 'N' 'O' 'P' 'Q' ,
             'R' 'S' 'T' 'U' 'V' 'W' 'X' 'Y' 'Z' 'a' 'b' 'c' 'd' ,
             'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 'p' 'q' ,
             'r' 's' 't' 'u' 'v' 'w' 'x' 'y' 'z' '0' '1' '2' '3' ,
             '4' '5' '6' '7' '8' '9' '+' '/'  };
 
     private  static  byte [] base64DecodeChars =  new  byte [] { - 1 , - 1 , - 1 , - 1 , - 1 ,
             - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 ,
             - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 ,
             - 1 , - 1 , - 1 , - 1 62 , - 1 , - 1 , - 1 63 52 53 54 55 56 57 58 59 ,
             60 61 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 0 1 2 3 4 5 6 7 8 9 ,
             10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 , - 1 ,
             - 1 , - 1 , - 1 , - 1 , - 1 26 27 28 29 30 31 32 33 34 35 36 37 ,
             38 39 40 41 42 43 44 45 46 47 48 49 50 51 , - 1 , - 1 , - 1 ,
             - 1 , - 1  };
 
     /**
      * BASE64加密
      * @param data
      * @return
      */
     protected  static  String encrypt( byte [] data) {
         StringBuffer sb =  new  StringBuffer();
         int  len = data.length;
         int  i =  0 ;
         int  b1, b2, b3;
         while  (i < len) {
             b1 = data[i++] &  0xff ;
             if  (i == len) {
                 sb.append(base64EncodeChars[b1 >>>  2 ]);
                 sb.append(base64EncodeChars[(b1 &  0x3 ) <<  4 ]);
                 sb.append( "==" );
                 break ;
             }
             b2 = data[i++] &  0xff ;
             if  (i == len) {
                 sb.append(base64EncodeChars[b1 >>>  2 ]);
                 sb.append(base64EncodeChars[((b1 &  0x03 ) <<  4 )
                         | ((b2 &  0xf0 ) >>>  4 )]);
                 sb.append(base64EncodeChars[(b2 &  0x0f ) <<  2 ]);
                 sb.append( "=" );
                 break ;
             }
             b3 = data[i++] &  0xff ;
             sb.append(base64EncodeChars[b1 >>>  2 ]);
             sb.append(base64EncodeChars[((b1 &  0x03 ) <<  4 )
                     | ((b2 &  0xf0 ) >>>  4 )]);
             sb.append(base64EncodeChars[((b2 &  0x0f ) <<  2 )
                     | ((b3 &  0xc0 ) >>>  6 )]);
             sb.append(base64EncodeChars[b3 &  0x3f ]);
         }
         return  sb.toString();
     }
 
     /**
      * Base64 解密
      * @param str
      * @return
      * @throws Exception
      */
     protected  static  byte [] decrypt(String str)  throws  Exception{
         StringBuffer sb =  new  StringBuffer();
         byte [] data =  str.getBytes( "US-ASCII" );
         int  len = data.length;
         int  i =  0 ;
         int  b1, b2, b3, b4;
         while  (i < len) {
 
             do  {
                 b1 = base64DecodeChars[data[i++]];
             while  (i < len && b1 == - 1 );
             if  (b1 == - 1 )
                 break ;
 
             do  {
                 b2 = base64DecodeChars[data[i++]];
             while  (i < len && b2 == - 1 );
             if  (b2 == - 1 )
                 break ;
             sb.append(( char ) ((b1 <<  2 ) | ((b2 &  0x30 ) >>>  4 )));
 
             do  {
                 b3 = data[i++];
                 if  (b3 ==  61 )
                     return  sb.toString().getBytes( "iso8859-1" );
                 b3 = base64DecodeChars[b3];
             while  (i < len && b3 == - 1 );
             if  (b3 == - 1 )
                 break ;
             sb.append(( char ) (((b2 &  0x0f ) <<  4 ) | ((b3 &  0x3c ) >>>  2 )));
 
             do  {
                 b4 = data[i++];
                 if  (b4 ==  61 )
                     return  sb.toString().getBytes( "iso8859-1" );
                 b4 = base64DecodeChars[b4];
             while  (i < len && b4 == - 1 );
             if  (b4 == - 1 )
                 break ;
             sb.append(( char ) (((b3 &  0x03 ) <<  6 ) | b4));
         }
         return  sb.toString().getBytes( "iso8859-1" );
     }
     
      /**
      *For Test By Jason
      */
     public  static  void  main(String[] args) {
         
     }
}

  

猜你喜欢

转载自www.cnblogs.com/kelelipeng/p/11911079.html