RSA 非对称加密算法

1.对称加密:
- 甲方选择某一种加密规则,对信息进行加密;
- 乙方使用同一种规则,对信息进行解密。

非对称加密:
- 乙方生成两把密钥(公钥和私钥)。公钥是公开的,任何人都可以获得,私钥则是保密的。
- 甲方获取乙方的公钥,然后用它对信息加密。
- 乙方得到加密后的信息,用私钥解密。
2. 欧拉定理:RSA算法的核心

可以大大简化某些运算,比如,7和10互质,根据欧拉定理,
已知 φ(10) 等于4,所以马上得到7的4倍数次方的个位数肯定是1。
如果n是一个质数,那么这就是费马小定理。

3. 模反元素:
如果两个正整数a和n互质,那么一定可以找到整数b,使得 ab-1 被n整除,或者说ab被n除的余数是1。

这时,b就叫做a的”模反元素”。

  1. 生成秘钥的步骤:
    a. 随机选择两个不相等的质数p和q。
    b. 计算p和q的乘积n。
    c. 计算n的欧拉函数φ(n),φ(n) = (p-1)(q-1)。
    d. 随机选择一个整数e,条件是1< e < φ(n),且e与φ(n) 互质,实际应用中,常常选择65537,但要留心是否互质。
    e. 计算e对于φ(n)的模反元素d。其实就是扩展欧几里得解一个二元一次方程。
    f. 将n和e封装为公钥,n和d封装为私钥。
  2. 可靠性:
    假设已知n 和 e,那么我们如果求出φ(n)求可以求出来d,但是当n很大时,很难做因数分解求得p和q的值,也就无法求出来φ(n)。
  3. 如何加密:
    加密使用的是公钥,假设加密的信息是m,m必须是一个整数且小于n,字符串可以利用其对应的ascii码或者unicode值。
      me ≡ c (mod n)
    我们通过这个式子加密后得到c的值,并传递c。
  4. 如何解密:
    解密使用的是私钥,
    cd ≡ m (mod n) 通过这个就可以利用私钥得到原文m。
    如果m的信息量太大,那么我们一般采取分段加密或对对称性加密的密钥进行非对称加密。
  5. 加解密正确性的证明:
    我们来证明下面这个式子:
       cd ≡ m (mod n)
    因为,根据加密规则
       e ≡ c (mod n)
    于是,c可以写成下面的形式:
      c = me - kn
    将c代入要我们要证明的那个解密规则:
       (mekn)d ≡ m (mod n)
    它等同于求证
       med ≡ m (mod n)
    由于
      ed ≡ 1 (mod φ(n))
    所以
      ed = hφ(n)+1
    将ed代入:
       mhφ(n)+1 ≡ m (mod n)
    接下来,分成两种情况证明上面这个式子。
    (1)m与n互质。
    根据欧拉定理,此时
       mφ(n) ≡ 1 (mod n)
    得到
       (mφ(n))h × m ≡ m (mod n)
    原式得到证明。
    (2)m与n不是互质关系。
    此时,由于n等于质数p和q的乘积,所以m必然等于kp或kq。
    以 m = kp为例,考虑到这时k与q必然互质,则根据欧拉定理,下面的式子成立:
       (kp)q1 ≡ 1 (mod q)
    进一步得到
       ((kp)q1)h(p1) × kp ≡ kp (mod q)

       (kp)ed ≡ kp (mod q)
    将它改写成下面的等式
       (kp)ed = tq + kp
    这时t必然能被p整除,即 t=t’p
       (kp)ed = t’pq + kp
    因为 m=kp,n=pq,所以
       med ≡ m (mod n)

参考资料:
http://www.ruanyifeng.com/blog/2013/06/rsa_algorithm_part_one.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值