付费节点推荐
免费节点
节点使用教程
一、密码学
1、密码学算法的分类
消息编码:Base64
消息摘要:MD类、SHA类、MAC
对称密码:DES、3DES、AES (参见:java对称密码算法的使用DES/3DES/AES算法 )
非对称密码:RSA、DH密钥交换
数字签名:RSASignature、DSASignature
2、密码学五元组
(明文,密文,加密算法,解密算法、密钥)
3、对称密码(传统密码)与非对称密码(公钥密码)
对称密码:加解密使用相同密钥的密码体制
非对称密码:加解密使用不同的密钥——公钥与私钥
4、Java编程中常用类
1)消息编码
BASE64Encoder、BASE64Decoder
2)消息摘要(参见:消息摘要MD/SHA/HMAC的使用方法 )
MessageDigest
3)对称密码
KeyGenerator、SecretKey、Cipher
4)非对称密码
KeyPairGenerator、KeyFactory、KeyPair、PublicKey、PrivateKey、Cipher
5)数字签名
Signature
二、Base64算法的编程使用
1、Base64编码示例
密文:d3d3LmJjb2Rlci5jbg==
明文:www.bcoder.cn
2、Base64算法定义
Base64是一种基于64个字符的编码算法,以任意8位字节序列组合的描述形式,这种形式不易直接识别。经Base64编码后的字符串的字符数是以4为单位的整数倍。
3、Base64密钥
索引
|
对应字符
|
索引
|
对应字符
|
索引
|
对应字符
|
索引
|
对应字符
|
0
|
A
|
17
|
R
|
34
|
i
|
51
|
z
|
1
|
B
|
18
|
S
|
35
|
j
|
52
|
0
|
2
|
C
|
19
|
T
|
36
|
k
|
53
|
1
|
3
|
D
|
20
|
U
|
37
|
l
|
54
|
2
|
4
|
E
|
21
|
V
|
38
|
m
|
55
|
3
|
5
|
F
|
22
|
W
|
39
|
n
|
56
|
4
|
6
|
G
|
23
|
X
|
40
|
o
|
57
|
5
|
7
|
H
|
24
|
Y
|
41
|
p
|
58
|
6
|
8
|
I
|
25
|
Z
|
42
|
q
|
59
|
7
|
9
|
J
|
26
|
a
|
43
|
r
|
60
|
8
|
10
|
K
|
27
|
b
|
44
|
s
|
61
|
9
|
11
|
L
|
28
|
c
|
45
|
t
|
62
|
+
|
12
|
M
|
29
|
d
|
46
|
u
|
63
|
/
|
13
|
N
|
30
|
e
|
47
|
v
|
||
14
|
O
|
31
|
f
|
48
|
w
|
||
15
|
P
|
32
|
g
|
49
|
x
|
||
16
|
Q
|
33
|
h
|
50
|
y
|
4、Base64编程使用
1)加密:
byte[] data = “www.bcoder.cn”.getBytes();
String result = new BASE64Encoder().encode(data);
2)解密:
byte[] result = new BASE64Decoder().decodeBuffer(data);
Base64算法的实际应用
Base64 算法最早应用于解决电子邮件传输的问题,在早期,由于“历史问题”,电子邮件只允许 ASCII 码字符,如果要传送一封带有非 ASCII 码字符的电子邮件,当它通过一些网关的时候就可能出现问题。这个网关很可能会对这个非 ASCII 码字符的二进制位做调整,即将这个非 ASCII 码的 8 位二进制码的最高位置为 0,此用户收到的邮件就会是一封纯粹的乱码邮件,基于这个原因产生了 Base64 算法。
我们在java中要使用base64算法,可以使用sun公司提供的jar包。点击下载
以下是相关代码示例:
Main.java
[cc lang="java"]
import java.io.IOException;
public class Main {
//待加密的明文
public static final String DATA = "jikexueyuan";
public static void main(String[] args) throws Exception {
/* Test Base64 */
String base64Result = Base64Util.encryptBase64(DATA.getBytes());
System.out.println(DATA + " >>>Base64编码>>>" + base64Result);
String base64String = Base64Util.decryptBase64(base64Result);
System.out.println(base64Result + " >>>Base64解码>>>" + base64String);
}
}
[/cc]
Base64Util.java
[cc lang="java"]
import java.io.IOException;
import Decoder.BASE64Decoder;
import Decoder.BASE64Encoder;
public class Base64Util {
public static String encryptBase64(byte[] data){
return new BASE64Encoder().encode(data);
}
public static String decryptBase64(String data) throws IOException{
byte[] resultBytes = new BASE64Decoder().decodeBuffer(data);
return new String(resultBytes);
}
}
[/cc]
未经允许不得转载:Bcoder资源网 » java中Base64编码解码的编程使用
评论前必须登录!
登陆 注册