你的位置:首页 > Java教程

[Java教程]第二章 Base64与URLBase64


2.1、算法基本规则:

  • 加密的算法公开
  • 加密的密钥不公开

Base64算法公开、密钥也公开的特性不符合基本算法规则,所以很容易被破解,所以一般不用于企业级的加密操作。

注意:具体的算法与密钥(对于Base64来讲,是一张字符映射表)可在《Java加密与解密的艺术(第2版)》第5章“电子邮件传输算法--Base64”中查看

 

2.2、应用场景

  • 简单加密(加密要求不高的情况下,即一眼看不穿的那种情况下使用)
  • 加密(改造字符映射表,即私藏秘钥)
  • 电子邮件传输(邮件内容使用Base64加密,实际上主要是处理中文问题的)
  • 网络数据传输(与URLBase64相关,下边会讲)
  • 密钥存储(密钥是一段二进制数据,密钥在通信双方的传递过程:甲方将密钥采用Base64编码,写入文档,通过安全途径(例如线下等)传给乙方,采用Base64存储密钥是为了增强密钥的易读性)
  • 数字证书存储
  • OpenSSL操作Base64产生数字证书

通常,我们使用Base64最多的情况就是存储密钥。

 

2.3、Base64实现方式

实现方式有三种:

  • Commons Codec(简称“CC”)
  • Bouncy Castle(简称“BC”)
  • JDK(不推荐使用,当做JDK没实现即可)

其中,最推荐使用Commons Codec。

注意:cc与bc的版本号,还有我实在jdk1.6下边调的

2.3.1、基于CC实现的Base64加解密

第一步:加入jar

第二步:编写代码

 

第三步:测试

 测试结果:

注意:可以采用debug断点调试来查看每一个变量的值来验证上边的情况。

 2.3.2、基于BC实现的Base64加解密算法

对于BC来讲,只有一般Base64加密算法,jar包以及简要代码如下:

 

2.4、URLBase64实现方式

一般来讲这种算法仅用于使用get方式传递私密数据和以get方式传递二进制数据。

  • commons codec(CC,推荐使用,因为不采用尾部补全,所以数据长度较短,减少了网络传输时间,尾部补全是Base64的)
  • bouncy castle(BC)

2.4.1、基于CC实现URLBase64

 测试代码自己去仿照上述的去写就好了。

2.4.2、基于BC实现URLBase64

 测试代码自己去写,然后查看加密后的字符串与CC加密后字符串有什么不同。