base64编码方式是一种非常普遍的对字符串进行编码的方法,通常,会有不少加解密算法会使用到base64,比如常用的sha1+base64以及md5+base64。
其实base64的64指的就是它的编码方法:把输入数据的二进制转换为a-z,A-Z,0-9,+,/再加上一个用来填充的=的字符串。这里刚好有64种不同的字符。所以就这样了。
它的具体方法是把每6bits的二进制数据按照base64的码表转换成上述字符。因此,刚好每3个字符就会被编码成4个字符,这4个字符就是一个小组,所以自然base64的字符串长度应该是4的倍数。但是实际上当最后一组不够的时候,就会用=来填充满。所以你看到的base64编码后的字符串很可能就会尾随一个==
我们先看看base64的码表:
Value | Encoding | Value | Encoding | Value | Encoding | Value | Encoding |
0 | A | 17 | R | 34 | i | 51 | z |
1 | B | 18 | S | 35 | j | 52 | 0 |
2 | C | 19 | T | 36 | k | 53 | 1 |
3 | D | 20 | U | 37 | l | 54 | 2 |
4 | E | 21 | V | 38 | m | 55 | 3 |
5 | F | 22 | W | 39 | n | 56 | 4 |
6 | G | 23 | X | 40 | o | 57 | 5 |
7 | H | 24 | Y | 41 | p | 58 | 6 |
8 | I | 25 | Z | 42 | q | 59 | 7 |
9 | J | 26 | a | 43 | r | 60 | 8 |
10 | K | 27 | b | 44 | s | 61 | 9 |
11 | L | 28 | c | 45 | t | 62 | + |
12 | M | 29 | d | 46 | u | 63 | / |
13 | N | 30 | e | 47 | v | ||
14 | O | 31 | f | 48 | w | (pad) | = |
15 | P | 32 | g | 49 | x | ||
16 | Q | 33 | h | 50 | y |
下面是我根据René Nyffenegger这个人写的算法修改之后直接从传入的MD5 32位的16进制字符串生成Base64编码的算法。
下面这个是网上流传的一个SHA1 和MD5 加密以及再进行base64编码的JavaScript脚本: