java base64编码和解码的三种方式

方式一:使用commons-codec.jar

    /**
         * @param bytes
         * @return
         */
        public static byte[] decode(final byte[] bytes) {
            return Base64.decodeBase64(bytes);
        }  

        /**
         * 二进制数据编码为BASE64字符串
         *
         * @param bytes
         * @return
         * @throws Exception
         */
        public static String encode(final byte[] bytes) {
            return new String(Base64.encodeBase64(bytes));
        }  

测试:

String base64String = "whuang123";
        byte[] result = Base64.encodeBase64(base64String.getBytes()); 

方式二:通过反射使用java 中不对外公开的类

    /***
         * encode by Base64
         */
        public static String encodeBase64(byte[]input) throws Exception{
            Class clazz=Class.forName("com.sun.org.apache.xerces.internal.impl.dv.util.Base64");
            Method mainMethod= clazz.getMethod("encode", byte[].class);
            mainMethod.setAccessible(true);
             Object retObj=mainMethod.invoke(null, new Object[]{input});
             return (String)retObj;
        }
        /***
         * decode by Base64
         */
        public static byte[] decodeBase64(String input) throws Exception{
            Class clazz=Class.forName("com.sun.org.apache.xerces.internal.impl.dv.util.Base64");
            Method mainMethod= clazz.getMethod("decode", String.class);
            mainMethod.setAccessible(true);
             Object retObj=mainMethod.invoke(null, input);
             return (byte[])retObj;
        }  

方式三:使用sun.misc.BASE64Encoder

    /**
         * 编码
         *
         * @param bstr
         * @return String
         */
         public static String encode(byte[] bstr) {
         return new sun.misc.BASE64Encoder().encode(bstr);
         }  

        /**
         * 解码
         *
         * @param str
         * @return string
         */
         public static byte[] decode(String str) {
         byte[] bt = null;
         try {
         sun.misc.BASE64Decoder decoder = new sun.misc.BASE64Decoder();
         bt = decoder.decodeBuffer(str);
         } catch (IOException e) {
         e.printStackTrace();
         }  

         return bt;
         }  

测试:

    package com.jn.base64;  

    import junit.framework.Assert;  

    import org.apache.commons.codec.binary.Base64;  

    import com.common.util.SystemUtil;  

    public class BaseTest {
        public static void main(String[] args) throws Exception {
            String base64String = "whuang123";
            byte[] result = Base64.encodeBase64(base64String.getBytes());
            SystemUtil.printBytes(result);
            byte[] result2 = SystemUtil.encode(base64String.getBytes()).getBytes();
            System.out.println("result2:"+result2);
            byte[] result3 = SystemUtil.encodeBase64(base64String.getBytes()).getBytes();
            boolean isSuccess = SystemUtil.isSame(result, result2);
            Assert.assertEquals(true, isSuccess);
            SystemUtil.printBytes(result2);
            SystemUtil.printBytes(result3);
            System.out.println(isSuccess);
        }
    }  

运行结果:

参考:

http://hw1287789687.iteye.com/blog/1971297

http://hw1287789687.iteye.com/blog/1910853

时间: 2024-08-02 03:52:46

java base64编码和解码的三种方式的相关文章

java base64编码和解码

Java 中使用base64编码和解码:   第一种方式: 通过反射使用java 中不对外公开的类: Java代码   /***       * encode by Base64       */       public static String encodeBase64(byte[]input) throws Exception{           Class clazz=Class.forName("com.sun.org.apache.xerces.internal.impl.dv.

android Java BASE64编码和解码二:图片的编码和解码

1.准备工作  (1)在项目中集成 Base64 代码,集成方法见第一篇博文:android Java BASE64编码和解码一:基础     (2)添加 ImgHelper 工具类   package com.app21; import java.io.ByteArrayOutputStream; import java.io.FileInputStream; import java.io.IOException; import android.graphics.Bitmap; import

【编程】java jdbc/ojdbc 链接oracle的三种方式

  本文是一篇学习笔记,学习如何通过java jdbc /ojdbc 连接oracle的几种方式.一 使用方法方法一:使用service_name 连接oracle  jdbc:oracle:thin:@//:/ 例如: jdbc:oracle:thin:@//10.10.10.1:1521/TDB注意这里的格式,@后面有//, 这是与使用SID的主要区别.对于集群来说,每个节点的SID 是不一样的,但是SERVICE_NAME 确可以包含所有节点. 方法二: 使用SID 连接oracle jd

android Java BASE64编码和解码一:基础

 今天在做Android项目的时候遇到一个问题,需求是向服务器上传一张图片,要求把图片转化成图片流放在 json字符串里传输.  类似这样的: {"name":"jike","age":"20","pic":"图片流"} ,  把图片转化为图片流要用到 Base64 的技术.   1.Base64  的作用     主要不是加密,它主要的用途是把一些二进制数转成普通字符用于网络传输.  

简述Java异步上传文件的三种方式_java

本文为大家分享了三种Java异步上传文件方式,供大家参考,具体内容如下 用第三方控件,如Flash,ActiveX等浏览器插件上传. 使用隐藏的iframe模拟异步上传. 使用XMLHttpRequest2来实现异步上传. 第一种使用浏览器插件上传,需要一定的底层编码功底,在这里我就不讲了,以免误人子弟,提出这点大家可以自行百度. 第二种使用隐藏的iframe模拟异步上传.为什么在这里说的是模拟呢?因为我们其实是将返回结果放在了一个隐藏的iframe中,所以才没有使当前页面跳转,感觉就像是异步操

java base64编码的三种方式

Java 中如何使用base64编码呢? 有如下三种方式: 方式一:commons-codec.jar Java代码   String base64String = "whuang123";           byte[] result = Base64.encodeBase64(base64String.getBytes());     方式二:使用sun.misc.BASE64Encoder Java代码   /**       * 编码       *        * @pa

Java实现BASE64编码和解码的方法_java

BASE64和其他相似的编码算法通常用于转换二进制数据为文本数据,其目的是为了简化存储或传输.更具体地说,BASE64算法主要用于转换二进制数据为ASCII字符串格式.Java语言提供了一个非常好的BASE64算法的实现,.本文将简要地讲述怎样使用BASE64以及它是怎样工作的. Base64的作用:主要不是加密,它主要的用途是把一些二进制数转成普通字符用于网络传输.由于一些二进制字符在传输协议中属于控制字符,不能直接传送需要转换一下就可以了. 第一种方式: 通过反射使用java 中不对外公开的

JS 实现Base64编码与解码实例详解_javascript技巧

Js实现Base64编码与解码 Base64其实是一种简单的置换加密方式,但是BASE64的用处往往并不是为了防止信息泄露,而且为了方便传输,进过BASE64编码后的信息会比原始信息长,大概是4/3倍. Base64是一种基于64个可打印字符来表示二进制数据的表示方法.由于2的6次方等于64,所以每6个比特为一个单元,对应某个可打印字符. Base64常用于在通常处理文本数据的场合,表示.传输.存储一些二进制数据.包括MIME的email,email via MIME, 在XML中存储复杂数据.

VC中BASE64编码和解码使用详解_C 语言

BASE64可以用来将binary的字节序列数据编码成ASCII字符序列构成的文本.完整的BASE64定义可见 RFC1421和 RFC2045.编码后的数据比原始数据略长,为原来的4/3.在电子邮件中,根据RFC822规定,每76个字符,还需要加上一个回车换行. 转换的时候,将三个byte的数据,先后放入一个24bit的缓冲区中,先来的byte占高位.数据不足3byte的话,于缓冲区中剩下的Bit用0补足.然后,每次取出6个bit,按照其值选择ABCDEFGHIJKLMNOPQRSTUVWXY