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,支付宝)