Java Web学习(二)数据加密

一、Tomcat 体系

首先通过一幅图来了解下tomcat的运行体系:

Tomcat服务器的启动是基于一个server.xml文件的。

启动流程:

  • 首先启动一个Server,Server里面就会启动Service,Service里面就会启动多个"Connector(连接器)",每一个连接器都在等待客户机的连接。
  • 当有用户使用浏览器去访问服务器上面的web资源时,首先是连接到Connector(连接器),Connector(连接器)是不处理用户的请求的,而是将用户的请求交给一个Engine(引擎)去处理。
  • Engine(引擎)接收到请求后就会解析用户想要访问的Host,然后将请求交给相应的Host。
  • Host收到请求后就会解析出用户想要访问这个Host下面的哪一个Web应用,一个web应用对应一个Context。

二、互联网上的加密原理

对称加密

定义:采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,也称为单密钥加密

使用场景:由于其速度快,对称性加密通常在消息发送方需要加密大量数据时使用。(如验证码,密码校验)

常用加密方式:DES、IDEA、RC2、RC4、SKIPJACK、RC5、AES算法等

非对称加密

定义:非对称加密算法需要一对密钥:公开密钥(publickey)和私有密钥(privatekey)。

实现过程:(PS:其实用只用一对公私钥也可以实现)

      • A要向B发送信息,A和B都要产生一对用于加密和解密的公钥和私钥。
      • A的私钥保密,A的公钥告诉B;B的私钥保密,B的公钥告诉A。
      • A要给B发送信息时,A用B的公钥加密信息,因为A知道B的公钥。
      • A将这个消息发给B(已经用B的公钥加密消息)。
      • B收到这个消息后,B用自己的私钥解密A的消息。其他所有收到这个报文的人都无法解密,因为只有B才有B的私钥

存在的问题:

  非对称性加密依然没有解决数据传输的安全性问题,比如A想向B发数据,B首先生成一对密钥(公钥和私钥),然后将公钥发给A,A拿到B发给他的公钥有就可以使用公钥加密数据后发给B,然而在B公钥发送给A的这个过程中,很有可能会被第三方C截获,C截获到B的公钥后,也使用B的公钥加密数据,然后发给B,B接收到数据后就晕了,因为搞不清楚接收到的数据到底是A发的还是C发的,这是其中一个问题,另一个问题就是,C截获到B发的公钥后,C可以自己生成一对密钥(公钥和私钥),然后发给A,A拿到公钥后就以为是B发给他的,然后就使用公钥加密数据发给B,发送给B的过程中被C截获下来,由于A是用C发给他的公钥加密数据的,而C有私钥,因此就可以解密A加密过后的内容了,而B接收到A发给他的数据后反而解不开了,因为数据是用C的公钥加密的,B没有C的私钥,所以就无法解密。

  1、被截获后发假消息给接收方,使得接收方无法识别消息的真假。

  2、被截获后发假消息给发送方,发送方用截获方密钥再加密发给接受方,此时接受方无法解密。

解决方案:

依靠第三方机构(CA机构,即证书授权中心),使用数字证书来担保。(数字证书的使用可以参考:https://www.cnblogs.com/xdp-gacl/p/3744053.html

 

猜你喜欢

转载自www.cnblogs.com/riches/p/11364438.html