Base64加密

import org.bouncycastle.util.encoders.Base64;//Bouncy Castle开源包

public class Base64Code {

        public final static String ENCODING= "UTF-8";//以3个字节表示汉字
       
        public static String encode(String data)throws Exception{
               //加密
               byte[] b=Base64.encode(data.getBytes( ENCODING));//返回编码格式为“UTF-8”的字节数组
               return new String(b,ENCODING); //构造一个新的编码格式为“UTF-8"的字符串
       }
       
        public static String decode(String data)throws Exception{
               //执行解码
               byte[] b=Base64.decode(data.getBytes( ENCODING));
               return new String(b,ENCODING);
       }
}

 import static org.junit.Assert.*;//测试包
 
public class test{
       
        public final static void main(String[] args) throws Exception{
              String inputStr= "Java加密与解密艺术" ;
              System. out.println("原文:\t" +inputStr);
               //进行Base64编码
              String code=Base64Code. encode(inputStr);
              System. out.println("编码后:\t" +code);
              
               //Base64解码
              String outputStr=Base64Code. decode(code);
              System. out.println("解码后:\t" +outputStr);
              
               //验证Base64编码解码一致性
               assertEquals(inputStr,outputStr);
       }
       
        /*
        * 原文:      Java加密与解密艺术
编码后:       SmF2YeWKoOWvhuS4juino+WvhuiJuuacrw==
解码后:       Java加密与解密艺术
        * */
}

Commons Codec开源包,加/解密

import org.apache.commons.codec.binary.Base64;//apache开元包,commons Codec

public class Commons_Base64 {
        public static final String Encoding= "UTF-8";
       
       
        public static String encode(String data)throws Exception{
               byte[] b=Base64.encodeBase64(data.getBytes( Encoding));
               return new String(b,Encoding);
       }
       
        //安全加密
        public static String encodeSafe(String data)throws Exception{
               byte[] b= Base64.encodeBase64(data.getBytes( Encoding), true );
               return new String(b,Encoding);
       }
       
        public static String decode(String data) throws Exception{
               byte[] b=Base64.decodeBase64(data.getBytes( Encoding));
               return new String(b,Encoding);
       }
}

import static org.junit.Assert.*;
public class test{
        public final static void main(String[] args) throws Exception{
              String inputStr= "Java加密与解密艺术" ;
              System. out.println("原文:\t" +inputStr);
              
               //base64加密
              String  encode=Commons_Base64. encode(inputStr);
              System. out.println("编码后:\t" +encode);
              
               //base64安全加密
              String encodeSage=Commons_Base64. encodeSafe(inputStr);
              System. out.println("安全加密后:\t" +encodeSage);
              
               //base64解码
              String outputStrSafe=Commons_Base64. decode(encodeSage);
              String outputStr=Commons_Base64. decode(encode);
              System. out.println("安全解码:\t" +outputStrSafe);
              System. out.println("解码:\t" +outputStr);
              
               //验证一致性
               assertEquals(inputStr,outputStr);
       }
        /*
        * 原文:      Java加密与解密艺术
编码后:       SmF2YeWKoOWvhuS4juino+WvhuiJuuacrw==
安全加密后:   SmF2YeWKoOWvhuS4juino+WvhuiJuuacrw==

安全解码:     Java加密与解密艺术
解码:  Java加密与解密艺术

        *
        * */
}

关于“安全加密”的区别:调试如下:
安全加密的字符串后有"\r\n",换行符。
从输出结果中也可以发现多了一个换行。




















posted @ 2014-08-30 11:21  徐小鱼  阅读(528)  评论(0编辑  收藏  举报