Apache commons 之 codec 简介跟入门代码

Apache commons 之 codec 简介和入门代码

Java JDK有一个 java.security 的 package, 提供了 MessageDigest 的编码方式, Digest Algorithms 包括了 MD2, MD5, SHA-1, SHA-256, SHA-384, 及 SHA-512 等等;

Codec 是Commons项目中用来处理常用的编码方法的工具类包,例如HEX、SHA1、MD5、Base64等等目前最新版本为1.4。

Base64/HEX是对称加密,MD5是不可逆加密,千万要注意

一些简单的加密示例代码:

package test.ffm83.commons.codec;

 

import java.io.UnsupportedEncodingException;

 

import org.apache.commons.codec.DecoderException;

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

import org.apache.commons.codec.binary.Hex;

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

/**

 * 通过commons codec 进行一些简单的加密解密等

 * @author范芳铭

 */

public classCodecUsage {

    public static void main(String[] args){

        Stringstr = "FanFangming";

       

        Stringbase64 = encodeBaseTest(str);

        decodeBaseTest(base64);

       

        Stringhex = encodeHexTest(str);

        decodeHexTest(hex);

       

        MD5Test(str);

       

        ShaTest(str);

       

    }

    // Base64编解码

    private static StringencodeBaseTest(String str) {

        Base64base64 = newBase64();

        try {

            str= base64.encodeToString(str.getBytes("UTF-8"));

        }catch(UnsupportedEncodingException e) {

            e.printStackTrace();

        }

        System.out.println("Base64 编码后:" + str);

        return str;

    }

 

    private static void decodeBaseTest(Stringstr) {

        str= newString(Base64.decodeBase64(str));

        System.out.println("Base64 解码后:" + str);

    }

 

    // Hex编解码

    private static StringencodeHexTest(String str) {

        try {

            str= Hex.encodeHexString(str.getBytes("UTF-8"));

        }catch(UnsupportedEncodingException e) {

            e.printStackTrace();

        }

        System.out.println("Hex 编码后:" + str);

        return str;

    }

 

    private static StringdecodeHexTest(String str) {

        Hexhex = newHex();

        try {

            str= newString((byte[])hex.decode(str));

        }catch(DecoderException e) {

            e.printStackTrace();

        }

        System.out.println("Hex 编码后:" + str);

        return str;

    }

 

    // MD5加密

    private static String MD5Test(Stringstr) {

        try {

            str= newString(DigestUtils.md5Hex(str.getBytes("UTF-8")));

            System.out.println("MD5 编码后:" + str);

        }catch(UnsupportedEncodingException e) {

            e.printStackTrace();

        }

        return str;

    }

 

    // SHA编码

    private static String ShaTest(Stringstr) {

        try {

            str= newString(DigestUtils.sha256(str.getBytes("UTF-8")));

            System.out.println("SHA 编码后:"+ str);

        }catch(UnsupportedEncodingException e) {

            e.printStackTrace();

        }

        return str;

    }

}

 

运行结果如下:

Base64 编码后:RmFuRmFuZ21pbmc=

Base64 解码后:FanFangming

Hex 编码后:46616e46616e676d696e67

Hex 编码后:FanFangming

MD5 编码后:922b65d5455be7d9a4875b6b1bde638d

SHA 编码后:31fcbfd641e54747d20288f883458664a05788a9