• RSA加密数学原理


    RSA加密数学原理

    RSA加密数学原理

    1 引言

    RSA加密算法,即是目前最有影响力的咬钥加密算法, 他能够抵抗到目前为止已知的绝大多数密码攻击, 已被ISO推荐为公钥数据加密标准. 该算法基于一个十分简单的数论事实: 将两个大素数乘十分容易, 但相要对乘积进行因式分解却极其困难, 因此可以将乘积公开作为加密密钥. (选自: 百度百科)

    2 RSA加密解密过程

    2.1 加密

    首先给出下面的公式: $$C=M^e mod n$$ 上式中M为需要加密的信息, (n=pq), p和q分别为100~200位的大素数, e与$(p-1)(q-1)$互为素数. 实际应用中, Bob将公用密钥(e, n)发送给Alice, 然后Alice利用该公用密钥根据 (C=M^{e} mod n) 进行加密, 然后将C发送给Bob

    2.2 解密

    Bob收到了Alice发送过来的C后, 接着就需要利用自己手上的私有密钥对加密信息C进行解密了, 他手上的私有密码是什么呢? 即d为e模(p-1)(q-1)的逆, 用算式表示为(de equiv 1pmod {(p-1)(q-1)}). 用私有密钥具体处理过程如下:

    • (C^{e}pmod n = M^{ed}pmod n)
    • 由于$de ≡ 1pmod {(p-1)(q-1)}$得(de=1+k(p-1)(q-1))
    • 从费马小定理, 以及M与(p和q)互质成立的事件为大概率事件 – 因为RSA一般用于短信息加密, 当加密的信息庞大的时候, 速度会明显变慢, 同时p和q均是大素数 – 两个条件推得:
    $$M^{v-1} equiv 1pmod v quad v in (p, q)$$

    费马小定理:如果p为素数, a是不能被p整除的整数, 则 (a^{p-1} equiv 1pmod p)

    • 于是:
    $$C^{d} = Mullet(M^{p-1})^{k(q-1)} equiv M ullet1 equiv Mpmod p$$ $$C^{d} = Mullet(M^{q-1})^{k(p-1)} equiv M ullet1 equiv Mpmod q$$
    • 由中国剩余定理得:
    $$C^{d} equiv Mpmod {pq}$$

    中国剩余定理: 令m1, m2, …, mn为两两互素的正整数, 则预余方程组 $$xequiv a_{1}pmod m_{1}$$ $$xequiv a_{2}pmod m_{2}$$ $$quad vdots quad$$ $$xequiv a_{n}pmod m_{n}$$ 即有一个解x, 使(0 le x le m), 且所有其他的解均与此解模m同余. (m=m_{1}m_{2}dotsi m_{n})

    3 收尾

    由于当解密密钥和加密密钥相同的时候, RSA算法比其他的对称加密算法而言需要更多的计算时间, RSA通常不被用来完整信息的加密.

    Date: 2014-04-11 Fri

    Author: Zhong Xiewei

    Org version 7.8.11 with Emacs version 24

    Validate XHTML 1.0
  • 相关阅读:
    android 4种启动模式
    android定位
    android GestureDetector 手势基础
    Android 软键盘盖住输入框的问题
    Android Fragment应用实战,使用碎片向ActivityGroup说再见
    Android Fragment完全解析,关于碎片你所需知道的一切
    setImageResource和setBackgroundResource的區別
    【Android面试】Android面试题集锦 (陆续更新)(最新2012-6-18) eoe上看到的
    Android内存性能优化(内部资料总结)
    关于BFC
  • 原文地址:https://www.cnblogs.com/grass-and-moon/p/3658504.html
Copyright © 2020-2023  润新知