关闭

Java加密系列之(二)Base64加密

标签: base64java加密commonsCodecbouncyCastle
489人阅读 评论(0) 收藏 举报
分类:

Base64算法

算法实现

使用JDK实现

使用Commons Codec实现

使用Bouncy Castle实现


sun.misc.BASE64Encoder/BASE64Decoder类不属于JDK标准库范畴,但在JDK中包含了该类,可以直接使用,但这个没有java doc,属于jdk里不推荐使用的工具类。强烈建议不要用sun.misc,是不安全的。

bouncycastle的jar包下载地址:http://www.bouncycastle.org/latest_releases.html


package com.tvm.mrz.security.base64;

import java.io.IOException;

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

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

public class Base64Test {

	private static String src = "Mr.Z Security Base64";

	public static void jdkBase64() {
		BASE64Encoder encoder = new BASE64Encoder();
		String encode = encoder.encode( src.getBytes() );
		System.out.println( "encode:" + encode );

		BASE64Decoder decoder = new BASE64Decoder();
		try {
			byte[] decode = decoder.decodeBuffer( encode );
			System.out.println( "decode:" + new String( decode ) );
		} catch( IOException e ) {
			e.printStackTrace();
		}
	}

	public static void commonsCodecBase64() {
		// String encode = Base64.encodeBase64String( src.getBytes() );
		byte[] encode = Base64.encodeBase64( src.getBytes() );
		System.out.println( "encode:" + new String( encode ) );

		byte[] decode = Base64.decodeBase64( encode );
		System.out.println( "decode:" + new String( decode ) );
	}

	public static void bouncyCastleBase64() {
		byte[] encode = org.bouncycastle.util.encoders.Base64.encode( src.getBytes() );
		System.out.println( "encode:" + new String( encode ) );

		byte[] decode = org.bouncycastle.util.encoders.Base64.decode( encode );
		System.out.println( "decode:" + new String( decode ) );
	}

	public static void main( String[] args ) {
		jdkBase64();
		commonsCodecBase64();
		bouncyCastleBase64();
	}
}


Base64算法应用场景

e-mail
密钥
证书文件


Base64算法

产生:邮件的“历史问题”
定义:基于64个字符的编码算法
衍生:Base16、Base32、Url Base64


Base64算法与加解密算法

Base64算法可以充当加解密算法,但是由于它的算法和码表都是公开的,所以很明显它是违反了柯克霍夫原则的一种方式,也比较容易被破解掉。当然也可以通过一些方式,比如加一些sort,或者在编码之前我们掺杂一些字符做一些扰码,然后再去Base64,这样相对来说可能会安全一些。其实Base64就是用的一种替换的方式来实现的算法

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:15937次
    • 积分:316
    • 等级:
    • 排名:千里之外
    • 原创:13篇
    • 转载:8篇
    • 译文:0篇
    • 评论:3条
    文章分类
    文章存档
    最新评论