11package base
22
33import (
4+ "crypto/md5"
5+ "crypto/sha1"
6+ "encoding/base32"
47 "encoding/base64"
58 "golang.org/x/text/encoding/simplifiedchinese"
69 "golang.org/x/text/transform"
@@ -10,22 +13,27 @@ import (
1013var EncodeTable = map [string ]func (Buffer ) string {
1114 "raw" : __rawString ,
1215 "utf8" : __rawString ,
13- "HEX" : __hexUpperString ,
14- "hex" : __hexLowerString ,
16+ "HEX" : __HEXString ,
17+ "hex" : __hexString ,
18+ "base32" : __base32String ,
1519 "base64" : __base64String ,
1620 "gbk" : __gbkString ,
1721 "gb18030" : __gb18030String ,
22+ "md5" : __md5String ,
23+ "MD5" : __MD5String ,
24+ "sha1" : __sha1String ,
25+ "SHA1" : __SHA1String ,
1826}
1927
20- func __hexUpperString (src Buffer ) string {
21- return __hexString (src , "0123456789ABCDEF" )
28+ func __HEXString (src Buffer ) string {
29+ return __hex (src , "0123456789ABCDEF" )
2230}
2331
24- func __hexLowerString (src Buffer ) string {
25- return __hexString (src , "0123456789abcdef" )
32+ func __hexString (src Buffer ) string {
33+ return __hex (src , "0123456789abcdef" )
2634}
2735
28- func __hexString (src Buffer , tab string ) string {
36+ func __hex (src Buffer , tab string ) string {
2937 dst := make ([]byte , len (src )* 2 )
3038 for i , v := range src {
3139 dst [i * 2 + 0 ] = tab [v >> 4 ]
@@ -34,6 +42,10 @@ func __hexString(src Buffer, tab string) string {
3442 return * (* string )(unsafe .Pointer (& dst ))
3543}
3644
45+ func __base32String (src Buffer ) string {
46+ return base32 .StdEncoding .EncodeToString (src )
47+ }
48+
3749func __base64String (src Buffer ) string {
3850 return base64 .StdEncoding .EncodeToString (src )
3951}
@@ -51,3 +63,31 @@ func __gbkString(src Buffer) string {
5163 dst , _ , _ := transform .Bytes (simplifiedchinese .GBK .NewDecoder (), src )
5264 return * (* string )(unsafe .Pointer (& dst ))
5365}
66+
67+ func __md5String (src Buffer ) string {
68+ h := md5 .New ()
69+ h .Write (src )
70+ dst := h .Sum (nil )
71+ return __hexString (dst )
72+ }
73+
74+ func __MD5String (src Buffer ) string {
75+ h := md5 .New ()
76+ h .Write (src )
77+ dst := h .Sum (nil )
78+ return __HEXString (dst )
79+ }
80+
81+ func __sha1String (src Buffer ) string {
82+ h := sha1 .New ()
83+ h .Write (src )
84+ dst := h .Sum (nil )
85+ return __hexString (dst )
86+ }
87+
88+ func __SHA1String (src Buffer ) string {
89+ h := sha1 .New ()
90+ h .Write (src )
91+ dst := h .Sum (nil )
92+ return __HEXString (dst )
93+ }
0 commit comments