zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    linux nat路由设置
    [auv] 模拟呼叫
    Sqlserver 导出insert插入语句
    函数name属性
    学习前端,应该选择哪些书籍来看?(转)
    JavaScript继承学习笔记
    Web响应式网站
    Javascript 异步加载详解(转)
    使用 nodeinspector 调试 Node.js
    用 JavaScript 检测 CPU 占比(转)
  • 原文地址:https://www.cnblogs.com/riches/p/11364438.html
Copyright © 2011-2022 走看看