首先,使用openssl的base64加密算法对字符串进行加密:
# echo "the source string" | openssl enc -base64
dGhlIHNvdXJjZSBzdHJpbmcK
然后,编写Java Base64解密算法:
pom.xml:
需要加入以下依赖包
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.9</version>
</dependency>
xxx.java:
package com.xxx.xxx;
import org.apache.commons.codec.binary.Base64;
public class xxx{private static Base64 base64 = new Base64();
public static String decrypt(String context) {
return new String(base64.decode(context));
}
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("dencrypted: " + decrypt("xxx"));
}
}
备注:
Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,大家可以查看RFC2045~RFC2049,上面有MIME的详细规范。Base64编码可用于在HTTP环境下传递较长的标识信息。例如,在Java Persistence系统Hibernate中,就采用了Base64来将一个较长的唯一标识符(一般为128-bit的UUID)编码为一个字符串,用作HTTP表单和HTTP GET URL中的参数。在其他应用程序中,也常常需要把二进制数据编码为适合放在URL(包括隐藏表单域)中的形式。此时,采用Base64编码不仅比较简短,同时也具有不可读性,即所编码的数据不会被人用肉眼所直接看到。
RFC2045还规定每行位76个字符,每行末尾需添加一个回车换行符,即便是最后一行不够76个字符,也要加换行符。
实现原理
Base64实际上是对二进制码做分组转换操作
1.每3个8位二进制码位一组,转换为4个6位二进制码为一组(不足6位时地位补0)。3个8位二进制码和4个6位二进制码长度都是24位。
2.对获得的4个6位二进制码补位,每个6位二进制码添加两位高位0,组成4个8位二进制码。
3.将获得的4个8位二进制码转换为4个十进制码。
4.将获得的十进制码转换为Base64字符表中对应的字符。