zoukankan      html  css  js  c++  java
  • RSA加密

    1. 数学基础
    1)素数,又称为质数,只能被1和自身整除的数。与之对应的是合数,除了能被1和自身整除,并且还能被其他整数整除。
    2)mod,求余数,不如456mod10 = 6,即456/10余数为6
     
    2. 加密技术概述
       数据加密的基本过程就是对原本为明文的文件或数据按照某种算法进行处理,使其成为不可读的一段代码,通常称之为“密文”,使其只能在输入相应的密钥之后才 能显示明文,通过这种途径来达到保护数据不被非法窃取使用的目的。该过程的逆过程为解密,即将信息转化为其原来数据的过程。
       加密体系主要分为对称加密体系和非对称加密体系。对称加密的特点是加密和解密采用相同的密钥。比如RC系列,DES系列等加密方法。非对称加密体系又称为 公钥加密系统,它的特点是加密和解密所使用的是不同的密钥,通常有两个密钥,即“公钥”和“私钥”,两者必须配对使用,缺一不可。公钥主要用来对外公布 的。私钥由持有人秘密保护。
     
    3. 结合哈希函数,非对称加密系统能够实现如下功能:
    1)机密性:保证非授权人员不能非法获取信息,“通过数据加密实现”,使用公钥加密的信息,只有私钥才能解密,非私钥持有人无法获取到信息。
    2)确认性:保证对方属于所声称的实体,“通过数据签名实现”
    3)数据完整性:保证信息内容不被篡改,入侵者不可能用假消息代替合法消息,“通过数据签名实现”
    4)不可抵赖性:发送者不能事后否认他发送过消息,“通过数字签名实现”
       2),3),4)主要结合哈希函数,实现数字签名。
     
    4. 公钥加密方案
       公钥加密方案主要由六部分组成:明文,加密算法,公钥,私钥,密文和解密算法
    基本步骤
    1)每个用户都生成一对密钥,用来对消息进行加密和解密。
    2)每个用户把两个密钥中的一个放在公共寄存器或者其他可访问的文件中,另外一个密钥自己保存
    3)A给B发送私人消息,则A用B的公钥加密消息
    4)当B收到A的这条消息,B可以用他的私钥进行解密。因为只有B知道他自己的私钥,其他人收到消息得人无法解密消息
     
    公钥和密钥的产生
    1)随意选择两个大的质数p和q,并且p != q,计算N = p * q
    2)根据欧拉函数,求的r = (p - 1) * (q - 1),然后就可以销毁p,q
    3)选择一个小于r的整数e,求的e关于模r的模反元素,命名为d(模反元素存在,当且仅当e和r互质)
    4)销毁p和q的记录
    (N,e)是公钥,(N,d)是密钥

    举例:假设用户A已经公布他的公钥,且用户B希望给A发送消息M。那么B计算C = M(e)(mod n)并发送C给A。当用户A接收到密文时,用户A通过计算M = C(d)(mod n)解密密文
    按照下列步骤生成密钥
    1) 选择两个素数:p=17,q=11
    2) 计算N = p * q = 17 * 11 = 187
    3) 计算欧拉值r(n) = (p - 1) * (q - 1) = 16 * 10 = 160
    4) 选择e,使得e与r(n)(=160)互素且小于r(n),比如选择e = 7
    5) 计算d,使得d * e (mod r(n)) = 1且d < r(n),
       d * e (mod r(n)) = d * 7 (mod 160) = 1 ---> d = 23,因为23 * 7 (mod 160) = 161(mod 160) = 1
    最终公钥为{7, 187},密钥为{23, 187}
    假如M = 88,对M(明文)进行加密解密
      1) 加密算法,计算C = 88(7) mod 187 = 11
      2) 解密算法,计算M = 11(23) mod 187 = 88
    5. 数字签名
       数字签名(Digital Signature)技术是不对称加密算法的典型应用。数字签名的应用过程是,数据源发送方使用自己的私钥数据校验和或其他与数据内容有关的变量进行加密处理,完成对数据的合法“签名”,数据接收方则利用对方的公钥来解读收到的“数字签名”,并将解读结果用于对数据完整性的检验,以确认签名的合法性。
       主要功能:保证信息传输的完整性、发送者的身份认证、防止交易中的抵赖发生。
       数字签名技术是将摘要信息用发送者的私钥加密,与原文一起传送给接收者。接收者只有用发送的公钥才能解密被加密的摘要信息,然后用HASH函数对收到的原文产生一个摘要信息,与解密的摘要信息对比。如果相同,则说明收到的信息是完整的,在传输过程中没有被修改,否则说明信息被修改过,因此数字签名能够验证信息的完整性。
     
      数字签名是个加密的过程,数字签名验证是个解密的过程。
  • 相关阅读:
    LINUX查看进程开始时间、结束时间、运行时间
    excel字符处理函数
    oracle RMAN参数配置详解
    Linux添加双IP
    免费软电话 — XLite 的安装及配置向导
    Asterisk实现寻呼对讲广播的Page()命令详解
    自动化工具的重要性
    负载均衡之应用请求路由模块的使用(ARR)(七)[使用ARR来实现主机名共享]
    负载均衡之应用请求路由模块的使用(ARR)(二)[安装]
    需求管理随笔
  • 原文地址:https://www.cnblogs.com/liangjq/p/4059002.html
Copyright © 2011-2022 走看看