单向加密——使用java加密Base64算法

使用java的BASE64加密算法


定义:

Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。可查看RFC2045~RFC2049,上面有MIME的详细规范。



加密、解密。

package com.imooc.security.base64;

import java.io.IOException;

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

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

/**
 * 使用Base64加密及解密的几种方法
 * @author Administrator
 *
 */
public class ImoocBase64 {
	private String srcStr = "imooc security base64";
	private String encipherStr = "aW1vb2Mgc2VjdXJpdHkgYmFzZTY0";
	
	/**
	 * 使用jdk(dt.jar版本,在jre/lib下)自带的算法
	 * 编码和解码的效率并不太好,而且在以后的Java版本可能就不被支援了,不建议使用。
	 */
	@Test
	public void jdkBase64(){
		BASE64Encoder encoder = new BASE64Encoder();
		String encode = encoder.encode(srcStr.getBytes());
		System.out.println("encode:"+encode);
		
		BASE64Decoder decoder = new BASE64Decoder();
		String decodeStr;
		try {
			decodeStr = new String(decoder.decodeBuffer(encipherStr));
			System.out.println("decode:"+decodeStr);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	/**
	 * 最佳方法:
	 * 使用jdk自带的算法,JAVA version:1.8
	 */
	@Test
	public void jdkNewBase64(){
		String encode = java.util.Base64.getEncoder().encodeToString(srcStr.getBytes());
		System.out.println("encode:"+encode);
		
		byte[] decodeBytes = java.util.Base64.getDecoder().decode(encipherStr.getBytes());
		String decode = new String(decodeBytes);
		System.out.println("decode:"+decode);
	}
	
	/**
	 * 第三方jar包:commons-codec-1.10.jar,Apache
	 */
	@Test
	public void commonsCodesBase64(){
		byte[] encodeBytes = Base64.encodeBase64(srcStr.getBytes());
		String encode = new String(encodeBytes);
		System.out.println("encode:"+encode);
		
		byte[] decodeBytes = Base64.decodeBase64(encipherStr.getBytes());
		String decode = new String(decodeBytes);
		System.out.println("decode:"+decode);
	}
	/**
	 * 第三方jar包:bcprov-jdk15on-149.jar,Bouncy Castle
	 */
	@Test
	public void bouncyCastleBase64(){
		byte[] encodeBytes = org.bouncycastle.util.encoders.Base64.decode(srcStr);
		String encode = new String(encodeBytes);
		System.out.println("encode:"+encode);
		
		byte[] decodeBytes = org.bouncycastle.util.encoders.Base64.decode(encipherStr.getBytes()); 
		String decode = new String(decodeBytes);
		System.out.println("decode:"+decode);
	}
	
	
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值