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"); 

  • 相关阅读:
    Centos 下查看服务器CPU的信息
    网速的一些知识整理
    如何复制文件夹里面的全部内容? 在pc上
    DataGridView中CellClick的使用,选中一行触发的动作可以在这个方法里执行
    C# 文件的压缩与解压缩
    C#调用Exe 及 有参数的
    oracle提示 ORA12154: TNS: 无法解析指定的连接标识符 OCIEnvCreate 失败, 返回代码为1,但错误消息文本不可用
    C# 导出wps配置服务器 注意事项
    C# FTP 操作类
    组件服务问题
  • 原文地址:https://www.cnblogs.com/staticed/p/8549455.html
Copyright © 2011-2022 走看看