1.认识Base64
对于Base64编码主要理解其转换原理。
1.结合下面例子,将字符串已字符为单位转换为对应的字符编码。
2.将获取字符编码转为二进制。
3.将二进制按照每3个8位二进制为一组,再转换成4个6位二进制组(不足6位则补0),3-8与4-6都是24位。
4.对获取的4-6二进制码补位,向6位二进制码添加2位高位00,变成4个8位二进制。
5.再将4-8二进制转换为10进制码,每8位转换成一个十进制数字。
6.将获取的十进制数字对应base64的字符表的对应字符。
,网络数据传输,密钥,数字证书,将二进制转换为base64字符。
为了能在http请求中的get方法传递二进制数据,由base64算法衍生出URL base64算法。UrlBase64 用于get传递二进制数据,意思 /,+,= 等符号不会出现。
2.验证数据完整性-消息摘要算法
Message Digest消息摘要算法是不可逆转的,目的是将任意长输入通过算法变为固定长输出,且保证输入变化一点输出都不同,且不能反向解密。消息摘要常被用验证文件的完整性,密码加密存储等
3.对称加密算法
DES (data encryption standard) 算法,现在常用
AES( Advanced Encryption Standard )算法来代替DES。java默认支持128位加密。
IDEA(International Data encryption algorithm)国际数据加密标准。
PBE(Password based encyption)基于口令的加密算法,算法的特点是由用户自己定义口令,采用随机数(盐),遍历次数等杂凑多重加密方法保证数据的安全性。
AES来对数据加密,解密。
4.非对称加密算法
RSA( 三位数学家Rivest、Shamir 和 Adleman 设计了一种算法,可以实现非对称加密 ) 、Elgamal、背包算法、Rabin、D-H( Diffie-Hellman密钥交换 )、ECC
带密钥的消息摘要算法-数字签名算法
是非对称加密算法与消息摘要算法的结合。
验证数据的完整性,认证数据来源, 并起到抗否认的作用。
有签名,验证两部分组成,坚持私钥签名,公钥验证的思想。
4.主要包括RSA,实现有MD2withRSA,SHA224withRSA等,目前最为广泛的签名,在电子商务与产品验证使用。
Digital Signature standance),本质是Elgamal数字签名算法。SHA224withDSA。
ECDSA算法 具有速度快,强度高,签名短等特点。微软的操作系统25位产品密钥就是椭圆曲线签名算法。产品密钥就是签名的16进制。
5.实际web应用使用sha1withRSA 来生产签名,AES来加密数据body。
6. 数字证书--综合应用篇
数字证书集合了多种密码学算法,自身带有公钥信息,完成相应的加密/解密,同时也带数字签名,鉴别消息来源,还有消息摘要信息,验证证书完整性,证书还含有用户身份信息,因而具有认证性。
2.数字证书常用非对称加密算法是RSA,数字签名算法sha1withRSA,消息摘要算法sha1算法。
3. java的KeyTools与Openssl是我们常用的数字证书管理工具。可以申请,导入,导出。 openssl也是ssl协议实现。
密钥库与数字证书。keyTools与本地密钥库相互关联,将私钥存于密钥库,公钥则已数字证书输出。
5.数字证书常常与传输层的ssl/tls协议共同构建应用层的https协议,确保网络交换安全。
7. 安全协议https
https=SSL/TLS+ HTTP ; SSL (secure socket layer ,安全套接字层) 和TLS (Transport Layer Sercurity,传输层安全)
2.ssl/tls协议分为两层:记录协议(record protocol)建立在tcp传输协议之上,为高层协议数据进行加密,解密等功能支持。
3.握手协议(handshake protocl),在建立ssl记录协议之上,在数据传输前,client与server进行身份认证,协商加密算法,交互会话时对称加密密钥。
ssl/tls在实际应用会根据browse与server选择不同的加密算法,支持如下加密算法
消息摘要算法:md5,sha1
对称加密算法:rc2,rc4,aes,
非对称加密算法:rsa,dh
数字签名:rsa,dsa
5,协议握手过程,1.协商算法(选择双方都支持的各种协议),2 .验证证书,主要验证返回证书的合法性。 3. 构建会话密钥,即完成握手协议。
6. 单向认证服务 : 仅仅客户端是对服务端的返回证书认证,把证书发相证书机构去认证。(例如银行的大众版网银)
(例如银行的专业版网银,client有密钥key,支付宝)