zoukankan      html  css  js  c++  java
  • Python 对称加密和非对称加密的区别【操作系统,长短链接】

    一,简介

    • 对称加密: 加密和解密的秘钥使用的是同一个.

    • 非对称加密: 与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。

    对称加密算法:密钥较短,破译困难,除了数据加密标准(DES),另一个对称密钥加密系统是国际数据加密算法(IDEA),它比DES的加密性好,且对计算机性能要求也没有那么高.

    • 优点:
    算法公开、计算量小、加密速度快、加密效率高
    
    • 缺点
      在数据传送前,发送方和接收方必须商定好秘钥,然后 使双方都能保存好秘钥。其次如果一方的秘钥被泄露,那么加密信息也就不安全了。
    另外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的唯一秘钥,这会使得收、发双方所拥有的钥匙数量巨大,密钥管理成为双方的负担。
    

    常见的对称加密算法有: DES、3DES、Blowfish、IDEA、RC4、RC5、RC6 和 AES

    非对称加密算法: 公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。

    非对称加密算法实现机密信息交换的基本过程是:甲方生成一对密钥并将其中的一把作为公用密钥向其它方公开;得到该公用密钥的乙方使用该密钥对机密信息进行加密后再发送给甲方;甲方再用自己保存的另一把专用密钥对加密后的信息进行解密。甲方只能用其专用密钥解密由其公用密钥加密后的任何信息。

    • 优点:
        安全
    
    • 缺点:
        速度较慢
    

    **常见的非对称加密算法有: **RSA、ECC(移动设备用)、Diffie-Hellman、El Gamal、DSA(数字签名用)

    Hash算法(摘要算法)

    Hash算法特别的地方在于它是一种单向算法,用户可以通过hash算法对目标信息生成一段特定长度的唯一hash值,却不能通过这个hash值重新获得目标信息。因此Hash算法常用在不可还原的密码存储、信息完整性校验等。

    常见的摘要算法有: MD2、MD4、MD5、HAVAL、SHA

    二,关于长连接和短连接的理解及使用场景

    1、定义

    • 1)短连接:
    例如普通的web请求,在三次握手之后建立连接,发送数据包并得到服务器返回的结果之后,四次握手进行关闭断开。
    
    • 2)长连接:
    采用长连接方式,执行三次握手链接后,不断开链接,保持客户端和服务端通信,直到服务器超时自动断开链接,或者客户端主动断开链接。
    

    2、长连接适用场景

    1. 长连接多用于操作频繁,点对点的通讯,而且连接数不能太多的情况。
    
    2. 如果每次操作都要建立连接然后再操作的话处理速度会降低,所以每次操作后,下次操作时直接发送数据就可以了,不用再建立TCP连接。
    
      例如:数据库长连接、聊天室,实时游戏等。
    
    3. 短连接适用场景
    
      1. web网站的http服务一般都用短连接,因为长连接对于服务器来说要耗费一定的资源。
    
      2. 所以并发量大,但是每个用户又不需频繁操作的情况下需要短连接。
    

    三,操作系统相关常识问题

    1.CPU缓存

    1. CPU缓存(Cache Memory)位于CPU与内存之间的临时存储器,它的容量比内存小但交换速度快。
    
    2. 在缓存中的数据是内存中的一小部分,但这一小部分是短时间内CPU即将访问的。
    
    3. 当CPU调用大量数据时,就可避开内存直接从缓存中调用,从而加快读取速度。
    

    2.内存

    1. 计算机中所有程序的运行都是在内存中进行的,因此内存的性能对计算机的影响非常大。
    
    2. 内存(Memory)也被称为内存储器,其作用是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。
    

    3.CPU

    1. 中央处理器(CPU)是一块超大规模的集成电路,是一台计算机的运算核心(Core)和控制核心( Control Unit)。
    
    2. 它的功能主要是解释计算机指令以及处理计算机软件中的数据。
    

    4.操作系统为什么要分内核态和用户态

    1. 内核态与用户态是操作系统的两种运行级别,跟intel cpu没有必然的联系
    
    2. 为了保证用户进程不能直接操作内核,保证内核的安全,操心系统将虚拟空间划分为两部分,一部分为内核空间,一部分为用户空间。
    
    3. 内核态:内核态是指对IO读写、内存分配等硬件资源的操作,这些操作只能操作系统来访问
    
    4. 用户态:指我们开发的普通程序,只能访问用户态的内存空间
    
  • 相关阅读:
    MySQL+Navicat for MySQL安装
    intellij idea14 +svn配置
    java重载(实现同一方法名,不同参数)
    Java连接MySQL数据库及操作
    通过Chrome的inspect对手机webview进行调试
    使用fiddler对手机上的程序进行抓包
    开始一个Android的appium实例
    Android模拟器内安装应用
    Appium的inspector使用
    python webdriver启动IE浏览器
  • 原文地址:https://www.cnblogs.com/xinzaiyuan/p/12371800.html
Copyright © 2011-2022 走看看