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) {
}
}
|
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) {
}
}
|