古典密码:以字符为基本加密单元
现代密码:以信息块为基本加密单元
受限制算法:算法保密
基于密钥算法:算法公开,密钥保密
对称密码算法:加密密钥与解密密钥相同
非对称密码算法:加密密钥与解密密钥不同,密钥分为公钥、私钥
散列函数:用来验证数据的完整性。长度不受限制,哈希值容易计算,运算过程不可逆。如MD5,SHA,MAC
OSI安全体系:
网络通信分为七层:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层
TCP/IP安全体系:网络接口层安全、网络层安全、传输层安全、应用层安全
抗否认性服务——公正机制
数据完整性机制——数据完整性机制
数据保密性服务——加密机制、业务流填充机制
访问控制服务——访问控制机制、路由控制机制
认证(鉴别)服务——认证机制、数字签名机制
Java安全组成:JCA、JCE、JSSE、JAAS
相关java包、类:java.security——消息摘要 ;javax.crypo安全消息摘要,消息认证(鉴别)码;java.net.ssl安全套接字
第三方java扩展:
Bouncy Castle 两种支持方案 1.配置 2.调用
Commons Codec:Apache; Base64、二进制、十六进制、字符集编码;
Base64算法(消息摘要):
算法实现:JDK,
Commons Codec,Bouncy Castle(需下载CC或BC的扩展jar包)
应用场景:e-mail,密钥,证书文件
jdk实现:
//编码
BASE64Encoder encoder = new BASE64Encoder();
String encode = encoder.encode(string.getBytes());
//解码
BASE64Decoder decoder = new BASE64Decoder();
String decode = new String(decoder.decodeBuffer(encode));
CC实现:
//编码
byte[] encodeBytes =Base64.encodeBase64(string.getBytes());
String encode = new String(encodeBytes);
//解码
byte[] decodeBytes = Base64.decodeBase64(encodeBytes);
String decode = new String(decodeBytes);
BC实现:
//编码
byte[] encodeBytes = Base64.encode(string.getBytes());
String encode = new String(encodeBytes);
//解码
byte[] decodeBytes = Base64.decode(encodeBytes);
String decode = new String(decodeBytes);
对称加密算法
加密密钥=解密密钥
常用对称算法:DES,3DES,AES,PBE,IDEA
1.构建密钥 2.公布密钥 3.使用密钥对数据加密 4.发送加密数据 5.使用密钥对数据解密
DES:有漏洞,广受诟病,已不推荐使用。
3DES:三重DES,用的比较多,但效率低。
AES:用的最多的对称算法
1.构建口令 2.公布口令 3.构建盐 4.使用盐、口令对数据加密 5.发送盐、加密数据 6.使用口令,盐对数据解密
PBE:基于口令加密,加盐,结合了消息摘要算法和对称加密算法的优势
非对称加密算法