java中各种编码工具类和加密算法

fplayer 8年前

来自: http://www.osblog.net/code/458.html


 封装各种格式的编码解码工具类. 

 * 1.Commons-Codec的 hex/base64 编码

 * 2.自制的base62 编码

 * 3.Commons-Lang的xml/html escape

 * 4.JDK提供的URLEncoder

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
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
public  class  Encodes {
 
     private  static  final  String DEFAULT_URL_ENCODING =  "UTF-8" ;
     private  static  final  char [] BASE62 =  "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" .toCharArray();
 
     /**
      * Hex编码.
      */
     public  static  String encodeHex( byte [] input) {
         return  Hex.encodeHexString(input);
     }
 
     /**
      * Hex解码.
      */
     public  static  byte [] decodeHex(String input) {
         try  {
             return  Hex.decodeHex(input.toCharArray());
         catch  (DecoderException e) {
             throw  Exceptions.unchecked(e);
         }
     }
 
     /**
      * Base64编码.
      */
     public  static  String encodeBase64( byte [] input) {
         return  Base64.encodeBase64String(input);
     }
 
     /**
      * Base64编码, URL安全(将Base64中的URL非法字符'+'和'/'转为'-'和'_', 见RFC3548).
      */
     public  static  String encodeUrlSafeBase64( byte [] input) {
         return  Base64.encodeBase64URLSafeString(input);
     }
 
     /**
      * Base64解码.
      */
     public  static  byte [] decodeBase64(String input) {
         return  Base64.decodeBase64(input);
     }
 
     /**
      * Base62编码。
      */
     public  static  String encodeBase62( byte [] input) {
         char [] chars =  new  char [input.length];
         for  ( int  i =  0 ; i < input.length; i++) {
             chars[i] = BASE62[((input[i] &  0xFF ) % BASE62.length)];
         }
         return  new  String(chars);
     }
 
     /**
      * Html 转码.
      */
     public  static  String escapeHtml(String shtml) {
         return  StringEscapeUtils.escapeHtml4(shtml);
     }
 
     /**
      * Html 解码.
      */
     public  static  String unescapeHtml(String htmlEscaped) {
         return  StringEscapeUtils.unescapeHtml4(htmlEscaped);
     }
 
     /**
      * Xml 转码.
      */
     public  static  String escapeXml(String xml) {
         return  StringEscapeUtils.escapeXml(xml);
     }
 
     /**
      * Xml 解码.
      */
     public  static  String unescapeXml(String xmlEscaped) {
         return  StringEscapeUtils.unescapeXml(xmlEscaped);
     }
 
     /**
      * URL 编码, Encode默认为UTF-8. 
      */
     public  static  String urlEncode(String part) {
         try  {
             return  URLEncoder.encode(part, DEFAULT_URL_ENCODING);
         catch  (UnsupportedEncodingException e) {
             throw  Exceptions.unchecked(e);
         }
     }
 
     /**
      * URL 解码, Encode默认为UTF-8. 
      */
     public  static  String urlDecode(String part) {
 
         try  {
             return  URLDecoder.decode(part, DEFAULT_URL_ENCODING);
         catch  (UnsupportedEncodingException e) {
             throw  Exceptions.unchecked(e);
         }
     }
}


Hex编码解码.

Base64编码解码

Base64编码, URL安全(将Base64中的URL非法字符'+'和'/'转为'-'和'_', 见RFC3548).

Base62编码

Html 转码解码.

Xml 转码解码

URL 编码解码, Encode默认为UTF-8. 

================================================

不得不佩服下面链接的仁兄,各种加密算法整理的着实详尽

各种java 加密算法:http://www.open-open.com/lib/view/open1397274257325.html