Java中加密算法介绍及其实现

1.编码算法 简介
是网络上最常见的用于传输8Bit字节码的编码方式之一 , 就是一种基于64个可打印字符来表示二进制数据的方法 。可查看~ , 上面有MIME的详细规范 。
编码是从二进制到字符的过程 , 可用于在HTTP环境下传递较长的标识信息 。例如 , 在Java 系统中 , 就采用了来将一个较长的唯一标识符(一般为128-bit的UUID)编码为一个字符串 , 用作HTTP表单和HTTP GET URL中的参数 。在其他应用程序中 , 也常常需要把二进制数据编码为适合放在URL(包括隐藏表单域)中的形式 。此时 , 采用编码具有不可读性 , 需要解码后才能阅读 。
码表
索引编码索引编码索引编码索引编码
17
34
51
18
35
52
19
36
53
20
37
54
21
38
55
22
39
56
23
40
57
24
41
58
25
42
59
26
43
60
10
27
44
61
11
28
45
62
12
29
46
63
13
30
47
14
31
48
15
32
49
16
33
50
特点:加密原理简单
实现
一般的来说加密数据需要使用到如下三个包
JDK:java.
CC:Codec
BC:
JDK实现
JDK 1.7写法
//加密public static String jdkBase64Encoder(String str){BASE64Encoder encoder = new BASE64Encoder();return encoder.encode(str.getBytes());}//解密public static String jdkBase64decoder(String str) throws IOException {BASE64Decoder decoder = new BASE64Decoder();return new String(decoder.decodeBuffer(str));}//调用public static void main(String[] args) throws IOException {System.out.println("原始字符串: " + BASE_STRING);String enStr = jdkBase64Encoder(BASE_STRING);System.out.println("Base64编码后: " + enStr);String deStr = jdkBase64decoder(enStr);System.out.println("Base64解码后: "+deStr);}
结果
原始字符串:
编码后:
解码后:
JDK1.8+写法
public static String jdkBase64Encoder(String str){String desc = Base64.getEncoder().encodeToString(str.getBytes(StandardCharsets.UTF_8));System.out.println("加密后的字符串为:"+desc);}public static String jdkBase64decoder(String str) throws IOException {String unDecodeStr=new String(Base64.getDecoder().decode(str),StandardCharsets.UTF_8);System.out.println("解密后的字符串为"+unDecodeStr);}
Codec实现
CC包的写法是简化了许多,类似JDK1.8的写法 。
MAVEN依赖
commons-codeccommons-codec1.10
import org.apache.commons.codec.binary.Base64;import java.io.IOException;/*** CommonCodec Base64* @author yanlong*/public class CCBase64 {private static final String BASE_STRING ="security base64";public static void main(String[] args) throws IOException {System.out.println("原始字符串: " + BASE_STRING);byte[] encStr = Base64.encodeBase64(BASE_STRING.getBytes());System.out.println("Base64编码后: " + new String(encStr));String deStr = new String(Base64.encodeBase64(encStr));System.out.println("Base64解码后: "+deStr);}}
实现
MAVEN依赖
org.bouncycastlebcpkix-jdk15on1.55