Base64是否有java版本的官方实现?
巴扎黑
巴扎黑 2017-04-18 10:04:55
0
5
534

写程序的时候需要用到base64的算法,自己实现时间不够,从网上找,代码无法信赖,所以想问下Base64编码算法是否有java版本的官方实现?或者是否有其他成熟的库实现了base64?

更新

很多同学提到了Apache Commons Codec,查资料看了下,感觉是当前找到的最好的解决方案了,多谢大家让我认识了这么好的库。

编码是开发中基础性的工作,有Codec这种专门解决编码问题的库,实在是方便了很多。建议由同样问题的同学尝试下Codec。

再更新

可以将codec做一个薄封装,简化工作流程,如下,供参考:

package apache.commons.codec;

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

import java.io.UnsupportedEncodingException;

/**
 * Created by pengzhenhua on 2016/10/2.
 * 封装apache commons codec
 */
public class CodeC {

    private static Base64 base64 = new Base64();

    /**
     * 对字符串进行base64编码,返回编码结果
     * 默认先对字符串进行utf8解码,然后进行base64编码
     * @param str
     * @return
     */
    public static String base64(String str){
        return base64(str , Encode.UTF8);
    }

    /**
     * 使用指定的编码方式对字符串进行解码,然后进行base64编码
     * @param str
     * @param encode
     * @return
     */
    public static String base64(String str , Encode encode){
        try {
            str = base64.encodeToString(str.getBytes(encode.getName()));
        } catch (UnsupportedEncodingException e) {
            //just ignore
        }
        return str;
    }

    /**
     * base64解码
     * @param str
     * @return
     */
    public static String base64Decode(String str){
        return new String(Base64.decodeBase64(str));
    }

    /**
     * md5加密
     * 使用utf8解码字符串
     * @param str
     * @return
     */
    public static String md5(String str){
        return md5(str , Encode.UTF8);
    }

    /**
     * md5加密
     * 使用指定编码方式对字符串解码,然后md5加密
     * @param str
     * @param encode
     * @return
     */
    public static String md5(String str , Encode encode){
        try {
           str = new String(DigestUtils.md5Hex(str.getBytes(encode.getName())));
        } catch (UnsupportedEncodingException e) {
            //just ignore
        }
        return str;
    }

    enum Encode{
        UTF8("UTF8"),
        GBK("gbk")
        ;
        private String name;

        Encode(String name) {
            this.name = name;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }
    }
}
巴扎黑
巴扎黑

répondre à tous(5)
刘奇

Idem que ci-dessus : commons-codec-1.10.jar est toujours très fiable
Publiez un morceau de code :


import java.io.UnsupportedEncodingException;  
import org.apache.commons.codec.binary.Base64;

public final class base64 {
          
        private static final String ENCODING = "ISO-8859-1";  
        /** 
         *  
         * @param data 
         * @return 
         * @throws UnsupportedEncodingException       
         * binaryData - Array containing binary data to encode. 
         * isChunked - if true this encoder will chunk the base64 output into 76 character blocks /r/n 
         * urlSafe - if true this encoder will emit - and _ instead of the usual + and / characters. Note: no padding is added when encoding using the URL-safe alphabet. 
         * maxResultSize - The maximum result size to accept. 
         */  
        public static String base64Encoder(String data) throws UnsupportedEncodingException{      
      
            byte [] binaryData = data.getBytes(ENCODING);  
            return Base64.encodeBase64String(binaryData);  
              
        }  
          
        public static String base64Decoder(String data) throws UnsupportedEncodingException{  
            byte [] binaryData = data.getBytes(ENCODING);  
            Base64.decodeBase64(data);  
            Base64.decodeInteger(binaryData);  
            return new String(Base64.decodeBase64(binaryData),ENCODING);  
        }  
}
洪涛

Il y a plus de packages javaUtil après jdk1.8 java.util.Base64

大家讲道理

Mise en place de

sun.misc.BASE64Decoder sun. Cependant, son utilisation est déconseillée car elle est incluse dans le forfait sun.
BASE64 est un encodage, mais il peut être encodé/décodé normalement et il n'y aura aucun problème de stabilité.

黄舟

Vous pouvez utiliser Apache Commons Codec
Remarque : bien qu'elle n'ait pas été mise à jour depuis 2016, il s'agit d'une bibliothèque mature en soi

迷茫

Le projet Apache Commons est toujours fiable. Codec Apache Commons.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal