JAVA加密与解密学习

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xhpscdx/article/details/61201396

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.验证数据完整性-消息摘要算法
    安全散列算法SHA(Secure Hash Algorithm,SHA) ,(Message Digest Algorithm )MD5,MAC(Message Authenticaiton Code)消息认证码等常用算法。消息摘要算法是不可逆转的,目的是将任意长输入通过算法变为固定长输出,且保证输入变化一点输出都不同,且不能反向解密。消息摘要常被用验证文件的完整性,密码加密存储等
 

3.对称加密算法
         公开秘钥给加密与解密方,常被用来加密数据传输,加密速度快。最开始有 DES (data encryption standard) 算法,现在常用
AES( Advanced Encryption Standard )算法来代替DES。java默认支持128位加密。    
IDEA(International Data encryption algorithm)国际数据加密标准。
PBE(Password based encyption)基于口令的加密算法,算法的特点是由用户自己定义口令,采用随机数(盐),遍历次数等杂凑多重加密方法保证数据的安全性。
我们在http网络传输中,可以先采用 AES来对数据加密,解密。


4.非对称加密算法
     RSA( 三位数学家Rivest、Shamir 和 Adleman 设计了一种算法,可以实现非对称加密 、Elgamal、背包算法、Rabin、D-H( Diffie-Hellman密钥交换 )、ECC

5. 带密钥的消息摘要算法-数字签名算法
   1. 数字签名算法可以看做是一种带有密钥的消息摘要算法,密钥可能包含公钥与私钥。也可以说, 是非对称加密算法与消息摘要算法的结合。
   2.数字签名公钥基础设施以及许多网络安全机制的(ssl/tls ,vpn)的基础。数字签名要求验证数据的完整性,认证数据来源, 并起到抗否认的作用
   3. 有签名,验证两部分组成,坚持私钥签名,公钥验证的思想。
   4.主要包括RSA,实现有MD2withRSA,SHA224withRSA等,目前最为广泛的签名,在电子商务与产品验证使用。
      DSA(Digital Signature algorithm)数字签名的标准,由美国主要到标准DSS(Digital Signature standance),本质是Elgamal数字签名算法。SHA224withDSA。
      ECDSA算法  具有速度快,强度高,签名短等特点。微软的操作系统25位产品密钥就是椭圆曲线签名算法。产品密钥就是签名的16进制。
    5.实际web应用使用sha1withRSA 来生产签名,AES来加密数据body。


6.  数字证书--综合应用篇
      1.数字证书集合了多种密码学算法,自身带有公钥信息,完成相应的加密/解密,同时也带数字签名,鉴别消息来源,还有消息摘要信息,验证证书完整性,证书还含有用户身份信息,因而具有认证性。
      2.数字证书常用非对称加密算法是RSA,数字签名算法sha1withRSA,消息摘要算法sha1算法。
      3. java的KeyTools与Openssl是我们常用的数字证书管理工具。可以申请,导入,导出。 openssl也是ssl协议实现。
      4.java 6完成支持x.509标准数字证书,可以使用 密钥库与数字证书。keyTools与本地密钥库相互关联,将私钥存于密钥库,公钥则已数字证书输出。
      5.数字证书常常与传输层的ssl/tls协议共同构建应用层的https协议,确保网络交换安全。

7. 安全协议https
  1.https=SSL/TLS+ HTTP ; SSL (secure socket layer ,安全套接字层) 和TLS (Transport Layer Sercurity,传输层安全)
  2.ssl/tls协议分为两层:记录协议(record protocol)建立在tcp传输协议之上,为高层协议数据进行加密,解密等功能支持。
  3.握手协议(handshake protocl),在建立ssl记录协议之上,在数据传输前,client与server进行身份认证,协商加密算法,交互会话时对称加密密钥。
  4. ssl/tls在实际应用会根据browse与server选择不同的加密算法,支持如下加密算法
    消息摘要算法:md5,sha1
    对称加密算法:rc2,rc4,aes,
    非对称加密算法:rsa,dh
    数字签名:rsa,dsa
 5,协议握手过程,1.协商算法(选择双方都支持的各种协议),2  .验证证书,主要验证返回证书的合法性。 3.    构建会话密钥,即完成握手协议。
 6. 单向认证服务 :  仅仅客户端是对服务端的返回证书认证,把证书发相证书机构去认证。(例如银行的大众版网银)
    双向认证服务:  服务器与客户端都需要提供证书,都去认证机构进行认证。 (例如银行的专业版网银,client有密钥key,支付宝)

猜你喜欢

转载自blog.csdn.net/xhpscdx/article/details/61201396