在Java中如何进行BASE64编码和解码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Java中如何进行BASE64编码和解码相关的知识,希望对你有一定的参考价值。

import sun.misc.BASE64Encoder; 
import sun.misc.BASE64Decoder; 

// 将 s 进行 BASE64 编码 
public static String getBASE64(String s)  
if (s == null) return null; 
return (new sun.misc.BASE64Encoder()).encode( s.getBytes() ); 
 

// 将 BASE64 编码的字符串 s 进行解码 
public static String getFromBASE64(String s)  
if (s == null) return null; 
BASE64Decoder decoder = new BASE64Decoder(); 
try  
byte[] b = decoder.decodeBuffer(s); 
return new String(b); 
 catch (Exception e)  
return null; 
 

参考技术A import java.io.IOException;

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
/**
* 名称:Base64.java <br />
* 说明:可逆加密类 <br />
*/
public class Base64
public static void main(String[] args)
String s = "seasonszx";
System.out.println("加密后:"+encryptBASE64(s));
String m = encryptBASE64(s);
System.out.println("解密后:"+decryptBASE64(m));



/**
* BASE64解密
*
* @param key
* @return
* @throws Exception
*/
public static String decryptBASE64(String key)
byte[] bt;
try
bt = (new BASE64Decoder()).decodeBuffer(key);
return new String(bt, "GB2312");
catch (IOException e)
e.printStackTrace();
return "";



/**
* BASE64加密
*
* @param key
* @return
* @throws Exception
*/
public static String encryptBASE64(String key)
byte[] bt = key.getBytes();
return (new BASE64Encoder()).encodeBuffer(bt);

参考技术B 如果是单纯只想用的话,导这个包进你的项目snakeyaml-1.17.jar,
里面有个类可以直接用

org.yaml.snakeyaml.external.biz.base64Coder.Base64Coder

例如:
String needToEncode = "你想编码的字符串";
String encoded = Base64Coder.encodeString(needToEncode);
// 控制台输出:5L2g5oOz57yW56CB55qE5a2X56ym5Liy
String decoded = Base64Coder.decodeString(encoded );
// 控制台输出:你想编码的字符串
Base64Coder这个类还提供了别的方法,可以自己看一下。
仅供参考。
参考技术C

这里有各种编程语言关于这种加密的详细解释

在 Java 中如何进行 BASE64 编码和解码

BASE64 编码是一种常用的字符编码,在很多地方都会用到。JDK 中提供了非常方便的 BASE64Encoder 和 BASE64Decoder,用它们可以非常方便的完成基于 BASE64 的编码和解码。下面是本人编的两个小的函数,分别用于 BASE64 的编码和解码: 

// 将 s 进行 BASE64 编码 
public static String getBASE64(String s) { 
if (s == null) return null; 
return (new sun.misc.BASE64Encoder()).encode( s.getBytes() ); 


// 将 BASE64 编码的字符串 s 进行解码 
public static String getFromBASE64(String s) { 
if (s == null) return null; 
BASE64Decoder decoder = new BASE64Decoder(); 
try { 
byte[] b = decoder.decodeBuffer(s); 
return new String(b); 
} catch (Exception e) { 
return null; 


//将 BASE64 编码的字符串 InputStream 进行解码 
public static java.nio.ByteBuffer getFromBASE64byte(String s) { 
if (s == null) 
return null; 
BASE64Decoder decoder = new BASE64Decoder(); 
try { 
return decoder.decodeBufferToByteBuffer(s);//decoder.decodeBuffer(s); 
} catch (Exception e) { 
return null; 



//将 BASE64 编码的文件进行解码 

ByteBuffer value = Base64Utils.getFromBASE64byte(nl.item(i*2+1).getTextContent().trim()); FileOutputStream fos = new FileOutputStream(filename); FileChannel fc = fos.getChannel(); 
fc.write(value); 
fos.flush(); 
fc.close(); 


import sun.misc.BASE64Encoder; 
import sun.misc.BASE64Decoder; 


Java中提供了计算报文摘要的另一个简单的方法,那就是使用java.security.MessageDigest类。下列代码片断显示了如何将MD5报文摘要算法(128位的摘要)应用到密码字符串: 
MassageDigest md= 
MessageDigest.getInstance("MD5"); 
md.update(originalPwd.getByetes()); 
byte[] digestedBytes=md.digest(); 

也使用报文摘要创建校验和、文本的唯一ID(也叫做数字指纹)。在签写ARJ文件会发生:校验和是根据ARJ文件的内容计算出来的,然后被加密,并且用base64的加密格式存放在manifest.mf文件中。base64是编码任意二进制数据的一种方法,得到的结果仅包含可打印字符(注意,base64编码数据占用的空间比转换前多三分之一)。由于报文摘要算法输出的结果是字节数组,可以使用base64编码将哈希字节转换成字符串,以便能将该字符串存放在数据库的varchar字段中。现在有许多base64编码器,但是最简单的方法是使用weblogic.jar库中的编码器:weblogic.apache.xerces.utils.Base64。该类的作用微乎其微,如下面的代码例子所示: 

String digestedPwdString = 
new String(Base64.encode(digestedPwdBytes)); 


import javax.mail.internet.*; 
import java.security.*; 
public String getEncodedHash(String clearText){ 
ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
OutputStream out = MimeUtility.encode(baos,"base64"); 
MessageDigest md = MessageDigest.getInstance("SHA"); 
if(clearText == null) clearText = ""; 
byte [] in = clearText.getBytes(); 
byte [] digested = md.digest(in); 
out.write(digested); 
out.close(); 
return new String(baos.toByteArray(), "ISO-8859-1"); 




































































以上是关于在Java中如何进行BASE64编码和解码的主要内容,如果未能解决你的问题,请参考以下文章

在 java 中如何进行base64 编码和解码

Java如何进行Base64的编码(Encode)与解码(Decode)?

base 64 以角度编码和解码字符串 (2+)

LoadRunner中Base64编码解码

如何对 string 进行Base64编码,解码?

Java进行Base64的编码(Encode)与解码(Decode)