首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Java中运用Base64

2012-12-19 
Java中使用Base64Java中使用Base64?参考资料:Base64更详细描述可参考http://zh.wikipedia.org/zh/Base64在

Java中使用Base64

Java中使用Base64

?

参考资料:

Base64更详细描述可参考http://zh.wikipedia.org/zh/Base64

在线Base64 http://www.motobit.com/util/base64-decoder-encoder.asp

?

关于Base64:

使用的字符:大小写字母各26个、10个数字、加号「+」、斜杠「/」,一共64个字符。等号「=」用来作为后缀用途。

?

编码的原理:

    将三个byte的数据,先后放入一个24bit的缓冲区中,先来的byte占高位。数据不足3byte的话,於緩衝區中剩下的bit用0补足。然后,每次取出6(因为26=64)个bit,按照其值选择

    文本

    M

    a

    n

    ASCII编码

    77

    97

    110

    二进制位

    0

    1

    0

    0

    1

    1

    0

    1

    0

    1

    1

    0

    0

    0

    0

    1

    0

    1

    1

    0

    1

    1

    1

    0

    索引

    19

    22

    5

    46

    Base64编码

    T

    W

    F

    u

    ?

    ?

    Java代码

    Jdk的rt.jar中包含了BASE64的编码、解码的相关代码,可直接使用。

    或者也可从第三方开源实现中找。比如:我下载了iHarder.net的代码,发现就一个类,而且这个类连package都没有,可以直接放入你的代码中并使用。

    ?

    //import sun.misc.BASE64Decoder;//import sun.misc.BASE64Encoder;public class UsingBase64 {public static void main(String[] args) throws Exception {byte[] data = "http://lggege.iteye.com".getBytes();String encoded = null;byte[] decoded = null;// 编码(加密)//encoded = (new BASE64Decoder()).decodeBuffer(data);//decoded = (new BASE64Decoder()).decodeBuffer(encoded);// 解密(解密)encoded = Base64.encodeBytes(data);decoded = Base64.decode(encoded);System.out.println(encoded);System.out.println(new String(decoded));}}
    ?


    注意:

    如果使用JDK1.6,那么需要设置project的properties
    Java Compiler - Errors/Warnings - Depracted and Restricted API - Forbidden reference(access rules) - ERROR

    将ERROR 改成 WARNING 即可

    ?

    总结

      Base64简单、易懂,不需要公钥、密钥等。可作为简单的加密、解密方案使用。查看Base64编码后的文本,很容易发现是基于Base64编码的,因为使用基本字符(a-zA-Z0-9+/=),而且后面通常会有1个或2个=。所以,也可以很容易解码这些内容。正由于如上原因,Base64一般不直接作为加密、解密的方案,而是将它与其他的解密方法一起使用。一般的加密方法如DES都会产生非常规字符(比如说乱码),可将DES加密后的内容再用Base64编码一次,得到基本字符,可以很容易的放入配置文件中。


    附件

    来自于 http://iharder.sourceforge.net/current/java/base64/ 的Base64实现

    ?

    ?

    ?

    ?