zoukankan      html  css  js  c++  java
  • 在 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"); 

  • 相关阅读:
    PAT B1027 打印沙漏 (20 分)
    PAT B1025 反转链表 (25 分)
    PAT B1022 D进制的A+B (20 分)
    PAT B1018 锤子剪刀布 (20 分)
    PAT B1017 A除以B (20 分)
    PAT B1015 德才论 (25 分)
    PAT B1013 数素数 (20 分)
    PAT B1010 一元多项式求导 (25 分)
    HDU 1405 The Last Practice
    HDU 1165 Eddy's research II
  • 原文地址:https://www.cnblogs.com/staticed/p/8549455.html
Copyright © 2011-2022 走看看