Base64算法

来源:互联网 发布:小号云免费源码 编辑:程序博客网 时间:2024/06/08 18:14

一、Base64算法概述

Base64算法最早应用于解决电子邮件传输的问题。它是一种基于64个字符的编码算法,根据RFC 2045的定义:“Base64内容传输编码是一种以任意8位字节序列组合的描述形式,这种形式不易被人直接识别。”

经过Base64编码后的数据会比原始数据略长,为原来的4/3倍。经过编码后的字符串的字符数是以4为单位的整数倍。

Base64算法的编码和解码的操作可充当加密和解密的操作,还有一张字符映射表充当了密钥。尽管如此,Base64算法仍不能叫做加密算法。



2、Commons Codec的应用

Commons Codec即实现了一般的Base64算法,也实现了遵循RFC标准的Base64算法

直接将下载的commons-codec-1.6-bin.zip解压,将解压开的文件夹里面的commons-codec-1.6.jar包导入工程即可。

[java] view plaincopy
  1. package Test;  
  2.   
  3. import java.io.UnsupportedEncodingException;  
  4.   
  5. import org.apache.commons.codec.binary.Base64;  
  6.   
  7. /** 
  8.  * 封装Base64的工具类 
  9.  *  
  10.  */  
  11. class Base64Coder {  
  12.     public final static String ENCODING = "UTF-8";  
  13.   
  14.     // 加密  
  15.     public static String encoded(String data) throws UnsupportedEncodingException {  
  16.         byte[] b = Base64.encodeBase64(data.getBytes(ENCODING));  
  17.         return new String(b, ENCODING);  
  18.     }  
  19.   
  20.     // 加密,遵循RFC标准  
  21.     public static String encodedSafe(String data) throws UnsupportedEncodingException {  
  22.         byte[] b = Base64.encodeBase64(data.getBytes(ENCODING),true);  
  23.         return new String(b, ENCODING);  
  24.     }  
  25.   
  26.     // 解密  
  27.     public static String decode(String data) throws UnsupportedEncodingException {  
  28.         byte[] b = Base64.decodeBase64(data.getBytes(ENCODING));  
  29.         return new String(b, ENCODING);  
  30.     }  
  31. }  
  32.   
  33. /** 
  34.  * 测试类 
  35.  */  
  36. public class Base64Test {  
  37.     public static void main(String[] args) throws UnsupportedEncodingException {  
  38.         String str = "Ad3";  
  39.         // 加密该字符串  
  40.         String encodedString = Base64Coder.encodedSafe(str);  
  41.         System.out.println(encodedString);  
  42.         // 解密该字符串  
  43.         String decodedString = Base64Coder.decode(encodedString);  
  44.         System.out.println(decodedString);  
  45.     }  
  46. }  


具体的应用可以参照Bouncy Castle和Commons Codec的API。



原创粉丝点击