`
kuru
  • 浏览: 140154 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

BASE64编码规则

    博客分类:
  • java
阅读更多

1、编码规则:
Base64编码要求把3个8位字节(3*8=24)转化为4个6位的字节(4*6=24),之后在6位的前面补两个0,形成8位一个字节的形式。
例如字符串“张3” :
11010101 11000101 00110011
转换后:
00110101 00011100 00010100 00110011
用十进制表示即为:53 34 20 51
这个并不是最终的结果,还需要根据Base64的编码表查询出转换后的值。下面就是BASE64编码表:
Table 1: The Base64 Alphabet
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 (pad) =
14 O 31 f 48 w
15 P 32 g 49 x
16 Q 33 h 50 y

    以上一共是64个编码,这也是Base64名称的由来,编码的编号对应的是得出的新字节的十进制值。因此,上例中字符串“张3”经过编码后就成了字符串“1iUz”了。
    当代码量不是3的整数倍时,代码量/3的余数自然就是2或者1。转换的时候,结果不够6位的用0来补上相应的位置,之后再在6位的前面补两个0。转换完空出的结果就用就用“=”来补位。譬如结果若最后余下的为2个字节的“张”:
字符串“张”
11010101 HEX:D5 11000101 HEX:C5

00110101 00011100 00010100
十进制53 十进制34 十进制20 pad
字符’1’ 字符’i’ 字符’U’ 字符’=’

这样,最后的2个字节被整理成了“1iU=”。
同理,若原代码只剩下一个字节,那么将会添加两个“=”。只有这两种情况,所以,Base64的编码最多会在编码结尾有两个“=”
2、编码和解码
       在JAVA中要实现Base64的编码和解码是非常容易的,因为JDK中已经有提供有现成的类:
      编码:
String src ="BASE64编码测试";
sun.misc.BASE64Encoder en = new sun.misc.BASE64Encoder();
String encodeStr = en.encode(src.getBytes());
     解码:
sun.misc.BASE64Decoder dec = new sun.misc.BASE64Decoder();
byte[] data = dec.decodeBuffer(decodeStr);
分享到:
评论
1 楼 sonsyboy 2008-12-25  
嗯,学习了

相关推荐

    BASE64编码规则.doc

    ### BASE64编码规则及其应用 #### 一、编码规则详解 BASE64编码是一种将任意二进制数据转换为可打印的ASCII字符序列的方法,主要用于处理非文本数据在网络传输中可能遇到的问题,如电子邮件系统中对二进制附件的...

    Base64编码规则

    Base64编码是一种在网络上传输和存储二进制数据时常用的数据编码方式,它将任意的二进制数据转换成可打印的ASCII字符序列。这种编码方式最初是为了解决邮件系统不能传输二进制数据的问题,现在广泛应用于各种场景,...

    BASE64编码规则.pdf

    BASE64编码规则 及在java C# VB 中的代码实现

    base64编码解码离线工具

    此外,虽然Base64编码使得数据变得不可读,但它并不提供安全性,因为编码规则是公开的,任何人都可以解码。因此,如果需要保密性,应配合其他加密手段使用。 总的来说,这个"base64编码解码离线工具"为用户提供了一...

    文件转换为Base64编码

    在文件转换为Base64编码的过程中,首先会读取文件的二进制内容,然后按照Base64的规则进行转换。这个过程包括分组、编码和填充三个步骤: 1. **分组**:每个8位字节的二进制数据被分为3个一组,如果文件长度不是3的...

    BASE64编码方法

    在跨语言(如Java和C#)进行对比时,只要遵循相同的编码规则,结果也应相同。 在实际应用中,BASE64编码常用于在网络上传输二进制数据,因为它可以确保数据在传输过程中不受字符集或编码格式的影响。同时,由于其...

    VC++6.0使用base64编解码转图片

    2. 分割二进制数据:按照Base64编码规则,将图片数据分为多个6位组。 3. 转换为ASCII字符:每个6位组转换为一个对应的Base64字符。 4. 添加填充:如果最后一组不足6位,需要补零并添加相应的填充字符'='。 5. 结果...

    Base64编码、转换、解码代码

    2. 分组:根据Base64编码规则,将编码字符串分为4个字符一组。 3. 解码:将每个字符转换回6位的二进制数。 4. 拼接:将4个6位二进制数连接成一个24位的二进制数据块,如果原始数据有填充,这里会得到少于3字节的结果...

    c++ base64 编码

    1. **预处理数据**:根据Base64的规则,每3个字节转换为4个Base64字符。如果原始数据不是3的倍数,需要在末尾添加0来补足到3的倍数。 2. **编码过程**:遍历每个3字节的数据块,将其转换为64进制。可以使用一个查找...

    Base64编码(VS2008MFC)

    1. 手动实现:编写一个函数,遍历输入的字节流,按照Base64规则进行转换。每个6位数据对应一个Base64字符,不足6位的部分用0补足。对于最后可能产生的不足3字节的数据,根据实际字节数进行编码。 2. 使用标准库:...

    BASE64编码转换工具

    将十六进制转换为BASE64,首先需要将十六进制字符串转换为二进制,然后再按照BASE64的规则进行编码。这个过程中,需要注意的是,十六进制字符串的长度可能不是3的倍数,因此可能需要在前面或后面添加0,使其长度符合...

    Base64 and Base32Hex Encoding Using LabVIEW_labview_base32编码互转_b

    在使用这些VI时,注意理解它们的输入和输出参数,以及任何可能的限制,例如字符串长度、编码规则等。此外,确保正确连接数据线,以避免数据丢失或错误。 **实际应用** Base64和Base32Hex编码在LabVIEW中有很多应用...

    微信小程序生成二维码的插件,基于base64编码输出二维码,不依赖canvas.zip

    由于不依赖Canvas,它可能将这个矩阵转换为Base64字符串,这个过程可能涉及到位运算和Base64编码规则的实现。 总的来说,“weapp-qrcode-base64”插件提供了一种高效且便捷的在微信小程序中生成二维码的解决方案,...

    VB JPG转base64和base64转JPG.rar

    VB6.0同样没有内置的Base64解码函数,但我们可以编写一个函数,根据Base64编码规则将字符串转换回字节数组。解码后的字节流可以直接写入到磁盘上的新JPG文件中。 在实际应用中,这样的转换功能可能会被用于网络上传...

    Base64编码解码工具.zip

    编码过程是将输入的二进制数据或文本按照Base64的规则进行转换,生成可打印的字符串;解码则是相反的过程,将Base64编码的字符串还原为原始的二进制数据或文本。 在编码过程中,首先对输入的二进制数据进行分组,每...

    base64编码解码c文件

    通常,编码函数会接受二进制数据,然后按照Base64规则生成对应的ASCII字符串;解码函数则相反,它接收Base64字符串并返回原始二进制数据。这些源代码可以作为学习和理解Base64编码机制的实例。 3. **base_test.txt*...

    base64编码实现

    base64编码规则的java实现.Provides encoding of raw bytes to base64-encoded characters, and decoding of base64 characters to raw bytes.

    base64编码解码用于pb8pb9pb12.5等

    标注base64编码方式 Base64要求把每三个8Bit的字节转换为四个6Bit的字节(3*8 = 4*6 = 24),然后把6Bit再添两位高位0,组成四个8Bit的字节,也就是说,转换后的字符串理论上将要比原来的长1/3。 关于这个编码的规则...

    C++写的Base64编码类

    4. **错误处理**:在编码和解码过程中,需要检查输入的有效性,如Base64字符串的格式是否正确,长度是否符合规则等,以防止出现异常。 `BASE64.exe`文件是一个已经编译好的可执行程序,很可能用于测试上述Base64类...

    JSP severlet 动态 base64 编码 图片 显示处理

    1. **编码规则**: - Base64 使用 US-ASCII 字符集中的 65 个字符:A-Z, a-z, 0-9, + 和 / 进行编码。 - 每个字符代表 6 位(即 64 种可能性),因此 3 个字节(24 位)的数据可以被编码成 4 个 Base64 字符。 2. ...

Global site tag (gtag.js) - Google Analytics