• RSA加密原理解释


    因数:
    1×6=6
    2×3=6
    那么1,6,2,3都是因数

    质数:
    只能被1和它本身整除的数

    余数:
    就是python里的%求余(或者说取模运算)

    非对称加密

    公钥(7,33)
    (E,N)
    7=E,33=N
    运算公式:明文的E次方%N=密文

    元数据:C,A,O
    这里用数字代替
    明文(十进制):3,1,15
    运算一下,就是3的7次方,1的7次方,15的七次方
    求幂运算:2187,1,170859375
    2187%33,1%33,170859375%33
    求余后:9,1,27

    然后会把9,1,27发给私钥端
    私钥(?,33) ?这个代表的数字是不能让任何人知道的
    ?的值为3,也就是(3,33)
    (3,33)
    (D,N)
    密文的D次方%N=明文
    密文:9,1,27
    也就是9的3次方,1的3次方,27的3次方
    求幂后的值为:729,1,19683
    729%33,1%33,19683%33
    求余后的值:3,1,15

    过程:
    1.任意的2个质数(实际应用中这两个数越大就越难破解):p=3;q=11
    2.质数相乘(密钥长度,并转换为二进制,这里33的二进制为100001,一共有6位,所以这个密钥就是6位,实际应用中,RSA密钥一般有1024位,重要场合为2048位):N=p×q=3×11=33
    3.欧拉公式:T=(p-1)×(q-1)=2×10=20
    4.选公钥E,需要满足的要求:质数;1 < 公钥 < T;不是T的因子,这里E选择了7,所以E=(7,33)。实际应用中,常常选择65537
    5.算出私钥D:(D×E)%T=1 D=(3,33)

    如果N可以破解,那么D就可以被算出,也就意味着私钥被破解。
    但是大整数的因数分解是一件非常困难的事,除了暴力破解,目前还没有发现别的有效方法。

    对极大整数做因数分解的难度决定了RSA算法的可靠性,也就是说,对一极大整数做因数分解越困难,RSA算法越可靠。
    只要密钥长度足够长,用RSA加密的信息实际上是不能被破解的。

    用公钥加密,用私钥解密。

  • 相关阅读:
    Diffbot:开发者工具 将web内容转换成应用
    算法之道—形而之上谓之道
    css三个ppt
    SMB的NTLM认证过程与NTLM挑战的编程实现
    c++计算圆周率
    SVN总结
    struts2技术实现用户名唯一的验证处理详解
    数字常量
    二叉树的创建和遍历
    php变量的定义和作用域
  • 原文地址:https://www.cnblogs.com/even160941/p/16069187.html
Copyright © 2020-2023  润新知