`
kuru
  • 浏览: 137161 次
  • 性别: 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编码规则

    NULL 博文链接:https://thingkau.iteye.com/blog/555813

    BASE64编码规则.pdf

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

    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。 关于这个编码的规则...

    Base64编码介绍

    Base64 编码详细介绍,包裹原理,编码规则。

    python base64编码解码详细笔记

    python中base64编码解码模块的使用笔记, 超级详细. 语法规划, 应用举例. 原理说明.

    C# Base64编码

    Base64的编码规则 Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编码。它将需要编码的数据拆分成字节数组。以3个字节为一组。按顺序排列24 位数据,再把这24位数据分成4组,即每组6位。再在每组的...

    C# Base64编码函数

    Base64的编码规则 Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编码。它将需要编码的数据拆分成字节数组。以3个字节为一组。按顺序排列24 位数据,再把这24位数据分成4组,即每组6位。再在每组的...

    base64位API(C++版本)

    Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。可查看RFC2045~RFC2049,上面有MIME的详细规范。Base64编码是从二进制到字符的过程,可用于在...

    Base64加密算法java版

    Base64加密算法java版

    base64_substring:生成Yara规则以查找包含特定关键字的base64编码文件

    base64_substring可以通过枚举给定搜索词的所有可能的base64编码并生成检查这些可能性的yara规则来帮助他们。 怎么跑 示例:生成与包含Application术语的base64编码文件匹配的yara规则。 > python generate_yara_...

    php base64 编码与解码实例代码

    php base64 编码与解码详解 1.自定义规则方式编码和解码 实例 public function test_changinttoStr () { $intvalue1 = 1232344234; $intStr = ''; $str = "Y 9 L F k g y 5 R o v i x I 1 a O f 8 U h d s 3 r ...

    unicode/UCS/UTF-8/Base64/ANSI等编码介绍

    各种编码规则及用法介绍,便于开发人员对其概念的理解。

    delphi压缩后并使用http协议base64上传下载6G超大文件的演示即核心代码概要.mp4

    知识点:1、Delphi自带的...3、Base64编码的规则;4、为何要分块断点续传,并使用TFileStream文件流替代内存流TMemoryStream;5、Buffer.size对Base64分块断点续传的影响;6、优化上传下载的速度与并发性能的综合考虑

    Protocol Buffers协议编码规则

    它是以Base 128 Varints编码基础, varints是一种将一个整数序列化为一个或者多个Bytes的方法,越小的整数,使用的Bytes越少。 基本规则 1.每个Byte的最高位(msb)是标志位,如果该位为1,表示该Byte后面还有其它Byte...

    JavaScript中关于base64的一些事

    base64 其实是一种编码转换方式, 将 ASCII 字符转换成普通文本, 是网络上最常见的用于传输8Bit字节代码的编码方式之一。 base64 由字母 a-z 、 A-Z 、 0-9 以及 + 和 / , 再加上作为垫字的 = , 一共65字符组成一个...

    阿里云API、SDK对接工具类

    阿里云API、SDK对接工具类,可点播服务接入区域,生成视频点播OpenAPI公共参数,获取CQS。按照Base64 编码规则把 HMAC 值编码成字符串。生成随机数得到签名值(Signature)。

    Encrypt.7z

    加解解密Demo、WinForm、C# 2017 选择加密辅助向量:无、有(两种方式),输入秘钥和加密前字符, 按加密按钮查看加密后字符,按解密按钮恢复加密前字符 基于向量的AES加密解密方法,...5、 AES加密结果使用base64编码

    医疗保障信息平台定点医药机构接口接入说明

    使用各自语言对应的SM2签名函数,对input字段使用私钥进行SM2签名后,再将字节码进行Base64编码,即是签名结果,并将签名结果赋值到cainfo字段,如签名结果。(输出参数output字段与输入的签名方法相同) 签名结果...

Global site tag (gtag.js) - Google Analytics