1. Base64使用A--Z,a--z,0--9,+,/ 这64个字符.
2. 编码原理:将3个字节转换成4个字节( (3 X 8) = 24 = (4 X 6) )先读入3个字节,每读一个字节,左移8位,再右移四次,每次6位,这样就有4个字节了.
3. 解码原理:将4个字节转换成3个字节.先读入4个6位(用或运算),每次左移6位,再右移3次,每次8位.这样就还原了.
Base64是一种很常见的编码规范,其作用是将二进制序列转换为人类可读的ASCII字符序列,常用在需用通过文本协议(比如HTTP和SMTP)来传输二进制数据的情况下。Base64并不是一种用于安全领域的加密解密算法(这类算法有DES等),尽管我们有时也听到使用Base64来加密解密的说法,但这里所说的加密与解密实际是指编码(encode)和解码(decode)的过程,其变换是非常简单的,仅仅能够避免信息被直接识别。
Base64采用了一种很简单的编码转换:对于待编码数据,以3个字节为单位,依次取6位数据并在前面补上两个0形成新的8位编码,由于3*8=4*6,这样3个字节的输入会变成4个字节的输出,长度上增加了1/3。
上面的处理还不能保证得到的字符都是可见字符,为了达到此目的,Base64制定了一个编码表,进行统一的转换。码表的大小为2^6=64,这也是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 m55 3
5 F 22 W39 n56 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 d46 u 63 /
13 N 30 e47 v
14 O 31 f 48 w (pad) =
15 P 32 g49 x
16 Q 33 h50 y
Base64编解码算法都很简单,网上有很多源码,这里就不介绍了。
另外还有一点要注意的地方,前面提到编码是以3个字节为单位,当剩下的字符数量不足3个字节时,则应使用0进行填充,相应的,输出字符则使用'='占位,因此编码后输出的文本末尾可能会出现1至2个'='。
这是一种典型的编码转换的处理方法,类似的可能还有UTF16与UTF8之间的转换。
分享到:
相关推荐
Java Base64加密解密方法工具类
java 图片base64 加密解密 代码 包括jar
C# Winform Base64加密解密,为程序源代码,可直接运行
base64加密解密代码及例程base64加密解密代码及例程base64加密解密代码及例程
c++实现base64算法加密解密,不需要修改,直接运行即可
微信小程序 对称加密 AES ECB base64 加密解密 真实项目可用
LabVIEW实现Base64加密解密程序源码,可以作为子VI直接调用,非常方便,经过测试没有问题。base64是一种用64个字符来表示任意二进制数据的方法。base 64编码可以将任意一组字节转换为较长的常见文本字符序列,从而...
用Java实现base64的加密解密
BASE64加密解密
因为是参照 js Base64写的java实现,所以代码可实现前台js,后台java的加密,解密的任意组合,当然也可自己简单改下参照序列顺序,使自己的加密解密变为独一的,网上无法使用工具解密出正确的数据。熟悉二进制的可...
Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二...本资源使用C语言实现Base64加密和解密,可以实现数据的加密和文件的加密,不借助任何的第三方工具,便于移植。
java开发使用base64进行加密解密,开发人员只需调用其中方法即可完成加密解密操作!
VC base64加密 解密,VC base64加密 解密,VC base64加密 解密
用过无问题,已经写了一份好详细的word文档。如果还是不会请留言。
NULL 博文链接:https://nannan408.iteye.com/blog/1995714
java代码实例 AES加密解密 Base64加密解密
纯javascript的base64加密解密工具类,不需要引用额外js文件,轻巧方便。
Base64 加密解密小工具 Base64 加密解密小工具 Base64 加密解密小工具
SqlSerVer 进行Base64 加密解密,支持中文,数字,字母
自定义密码表,Base64加密解密代码封装,源代码可以进行自定义