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

原创 2015年04月25日 14:40:06

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就是用的一种替换的方式来实现的算法

Java代码Base64加密解密使用

Java代码Base64加密解密使用       程序中有时候需要把用户名和密码保存到本地,下次登录时自动获取,如果是直接使用字符串保存,肯定容易泄露密码,这就需要经过加密,但是登录时还要获取密码,这...
  • wenzhi20102321
  • wenzhi20102321
  • 2017年04月06日 14:04
  • 1828

php、java、android、ios通用的3des+base64加密方法

php服务器,java服务器,android,ios开发兼容的3des+base64加密解密。 直接在项目中拷贝代码作为工具类使用即可。方便快速开发加解密功能。 php  ...
  • Nicholas_Nick
  • Nicholas_Nick
  • 2016年12月01日 12:58
  • 2025

JAVA加密体系结构

  JavaTM 加密体系结构API 规范和参考  上次修改时间: 1998 年 10 月 30 日简介设计原理体系结构概念  核心类和接口Provider 类如何请求和提供提供者的实现安装提供者Se...
  • soief
  • soief
  • 2008年07月07日 17:26
  • 4460

java加密、解密技术系列:Base64

斌斌 (给我写信) 原创博文(http://blog.csdn.net/binbinxyz),转载请注明出处!学习比特币,接触最多的肯定要属比特币地址了。它是一长串的字母和数字组合,例如:`1A1zP...
  • binbinxyz
  • binbinxyz
  • 2016年01月15日 22:00
  • 998

android和java平台统一的DES加密解决方案,解决加密不一样的问题

遇到一个问题,很是郁闷,我为了传输安全,在android和平台之间,想用DES加密传输,也就是服务端加密,然后android在解码,但是,试了很多次,问题都是java平台和android能够独立完成加...
  • jie11447416
  • jie11447416
  • 2016年05月14日 10:26
  • 830

base64 加密方式详解

base64 加密方式详解 base64编码表 命名 base64是用于传输8Bit字节代码,由上图的编码表可以知道,编码后的内容只包含这64个字符类型,所以称为base64编码(不足四个字符的时...
  • u013933272
  • u013933272
  • 2016年11月24日 15:09
  • 1483

base64加密原理详解

base64加密原理详解          声明:本文是在看了他人总结,并摘抄大部分图文,和少量自己的总结写成          原作者地址链接:Base64算法原理       Base64编...
  • aozeahj
  • aozeahj
  • 2016年09月11日 23:18
  • 3995

iOS中明文加密方式之base64加密

在iOS开发中,我们经常会用到网络请求,在网络请求的过程中,我们经常需要想服务器发送参数,其中就包括帐号密码一类,在发送这些参数的时候,直接发送明文是不安全的,因此我们需要对明文进行加密。今天介绍第一...
  • scotty_ke
  • scotty_ke
  • 2016年06月16日 15:15
  • 1281

base64加密 or base64编码?

转自:http://coderbee.net/index.php/basis/20130910/459 base64加密? 最近又碰到这么个奇葩的需求:“出于安全考...
  • Sasoritattoo
  • Sasoritattoo
  • 2014年01月07日 22:06
  • 1914

Java的3种Base64加密方法

Java的3种Base64加密方法 , 分别是 jdk默认实现的加密方式, 使用cc的加密方式和使用bc的加密方式 import java.io.IOException; import org.a...
  • ch717828
  • ch717828
  • 2015年06月27日 19:50
  • 6690
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java加密系列之(二)Base64加密
举报原因:
原因补充:

(最多只允许输入30个字)