标签:Java Utils b1 b2 b3 sb Base64Utils data append
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,Utils,b1,b2,b3,sb,Base64Utils,data,append 来源: https://www.cnblogs.com/kelelipeng/p/11911079.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。