密码学概述
- 密码学基本功能
- 基本模型
模型.png
- 算法分类
- 消息编码:Base64
- 消息摘要:MD、SHA、MAC
- 对称加密:DES、3DES、AES
- 非对称加密:RSA、DH密钥交换
- 数字签名:RSASignature、DSASignature
- 密码学五元祖
- (明文、密文、加密算法、加密算法、密钥)
- 密码和密钥区别
密钥 != 密码
密钥+规则 == 密码
对于破解者来说,拿到密钥就等于拿到了密码。所以重点是密钥!
- 对称密码&非对称密码
对称密码:加解密使用相同密钥的密码体制
非对称密码:加解密使用不同的密钥-公钥和私钥
- Java中常用的类
- 消息编码:BASE64Encoder、BASE64Decoder
- 消息摘要:MessageDigest
- 对称加密:KeyGenerator、SecretKey、Cipher
- 非对称密码:KeyPairGenerator、KeyFactory、KeyPair、PublicKey、PrivateKey、Cipher
- 数字签名:Signature
Base64算法编程使用
import java.io.IOException;
import sun.misc.BASE64Encoder;
import sun.misc.BASE64Decoder;
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);
}
}
/*
* --"JDK"
* --Commons Codec
* --Bouncy Castle
*/
public class Base64 {
public static final String DATA = "Eric Base64";
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);
}
}
输出结果:
Eric Base64 >>>Base64编码>>>RXJpYyBCYXNlNjQ=
RXJpYyBCYXNlNjQ= >>>Base64解码>>>Eric Base64
网友评论