java base64编码和解码

简介:

Java 中使用base64编码和解码:

 

第一种方式:

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

Java代码   收藏代码
  1. /*** 
  2.      * encode by Base64 
  3.      */  
  4.     public static String encodeBase64(byte[]input) throws Exception{  
  5.         Class clazz=Class.forName("com.sun.org.apache.xerces.internal.impl.dv.util.Base64");  
  6.         Method mainMethod= clazz.getMethod("encode"byte[].class);  
  7.         mainMethod.setAccessible(true);  
  8.          Object retObj=mainMethod.invoke(nullnew Object[]{input});  
  9.          return (String)retObj;  
  10.     }  
  11.     /*** 
  12.      * decode by Base64 
  13.      */  
  14.     public static byte[] decodeBase64(String input) throws Exception{  
  15.         Class clazz=Class.forName("com.sun.org.apache.xerces.internal.impl.dv.util.Base64");  
  16.         Method mainMethod= clazz.getMethod("decode", String.class);  
  17.         mainMethod.setAccessible(true);  
  18.          Object retObj=mainMethod.invoke(null, input);  
  19.          return (byte[])retObj;  
  20.     }  

 

第二种方式:

使用commons-codec.jar

Java代码   收藏代码
  1. /** 
  2.      * @param bytes 
  3.      * @return 
  4.      */  
  5.     public static byte[] decode(final byte[] bytes) {  
  6.         return Base64.decodeBase64(bytes);  
  7.     }  
  8.   
  9.     /** 
  10.      * 二进制数据编码为BASE64字符串 
  11.      * 
  12.      * @param bytes 
  13.      * @return 
  14.      * @throws Exception 
  15.      */  
  16.     public static String encode(final byte[] bytes) {  
  17.         return new String(Base64.encodeBase64(bytes));  
  18.     }  

 

第三种方式:

Java代码   收藏代码
  1. /**  
  2.     * 编码  
  3.     * @param bstr  
  4.     * @return String  
  5.     */    
  6.    public static String encode(byte[] bstr){    
  7.    return new sun.misc.BASE64Encoder().encode(bstr);    
  8.    }    
  9.    
  10.    /**  
  11.     * 解码  
  12.     * @param str  
  13.     * @return string  
  14.     */    
  15.    public static byte[] decode(String str){    
  16.    byte[] bt = null;    
  17.    try {    
  18.        sun.misc.BASE64Decoder decoder = new sun.misc.BASE64Decoder();    
  19.        bt = decoder.decodeBuffer( str );    
  20.    } catch (IOException e) {    
  21.        e.printStackTrace();    
  22.    }    
  23.    
  24.        return bt;    
  25.    }    

 

 

相关文章
|
2月前
|
安全 Java API
告别繁琐编码,拥抱Java 8新特性:Stream API与Optional类助你高效编程,成就卓越开发者!
【8月更文挑战第29天】Java 8为开发者引入了多项新特性,其中Stream API和Optional类尤其值得关注。Stream API对集合操作进行了高级抽象,支持声明式的数据处理,避免了显式循环代码的编写;而Optional类则作为非空值的容器,有效减少了空指针异常的风险。通过几个实战示例,我们展示了如何利用Stream API进行过滤与转换操作,以及如何借助Optional类安全地处理可能为null的数据,从而使代码更加简洁和健壮。
72 0
|
9天前
|
存储 移动开发 Java
java核心之字符串与编码
java核心之字符串与编码
13 2
|
2月前
|
Java
Java系列之:字符串UTF-8 编码格式转换位 UTF-32 【生僻字截取问题】
这篇文章讨论了在Java中处理包含生僻字的字符串时可能遇到的问题,并提供了一种解决方法:将字符串的编码格式从UTF-8转换为UTF-32,以确保每个字符都占用固定的字节数,从而避免在截取操作中破坏字符,示例代码展示了如何进行编码转换和字符串截取。
|
2月前
|
存储 安全 Java
"Java编码魔法:揭秘图片与文件的Base64神秘转换术,让数据在指尖跳跃!"
【8月更文挑战第16天】Base64编码在Java开发中常用于将二进制数据如图片转换为ASCII字符串以便传输。编码使用64个字符及等号填充,每3字节数据编码为4个字符。Java利用`java.util.Base64`类实现此功能:读取图片或文件为字节数组后进行编码。解码时将Base64字符串还原为字节数组并写入文件。需注意编码效率降低、不提供安全性及特殊字符兼容性等问题。掌握这些技巧有助于解决Web开发中的数据传输需求。
62 4
|
2月前
|
Java
Java——编码GBK的不可映射字符
Java——编码GBK的不可映射字符
34 1
|
2月前
|
Java PHP 开发者
PHP中的异常处理:Java常见的编码方式
在PHP开发中,掌握异常处理至关重要,它有助于预见并管理运行时错误,避免用户体验受损或数据丢失。本文介绍PHP异常处理的基本概念与实践,包括try-catch语句的使用,以及如何通过抛出和捕获异常来增强代码的健壮性和可靠性。通过示例展示如何避免常见错误,如除数为零的情况,并探讨多catch块和finally语句的高级用法,帮助开发者提升程序稳定性与可维护性。[总字符数:238]
24 0
|
2月前
|
Java
Java 图片、文件 Base64 互转
Java 图片、文件 Base64 互转
34 0
|
3月前
|
SQL 存储 安全
如何在Java中进行安全编码?
如何在Java中进行安全编码?
|
4月前
|
存储 Java 数据处理
Java的Base64加密解密详解
Java的Base64加密解密详解
|
4月前
|
Java
【技术解码】Java线程的五味人生:新建、就绪、运行、阻塞与死亡的哲学解读!
【6月更文挑战第19天】Java线程生命周期如同人生旅程,经历新建、就绪、运行、阻塞至死亡五阶段。从`new Thread()`的诞生到`start()`的蓄势待发,再到`run()`的全力以赴,线程在代码中奔跑。阻塞时面临挑战,等待资源释放,最终通过`join()`或中断结束生命。线程的每个状态转变,都是编程世界与哲思的交汇点。
29 1
下一篇
无影云桌面