zoukankan      html  css  js  c++  java
  • 第四课 RSA算法

    RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。

    在公开密钥密码体制中,加密密钥(即公开密钥)PK是公开信息,而解密密钥(即秘密密钥)SK是需要保密的。加密算法E和解密算法D也都是公开的。虽然秘密密钥SK是由公开密钥PK决定的,但却不能根据PK计算出SK。

    准备工作:

    1.选择两个质数p, q

    2.令N = pq, e 为 与(p-1)(q-1)互质的数 (为了快速解密,若符合条件一般选择最小的3) (N, e)为公钥

    3.令d为e mod (p-1)(q-1)的逆。(N,d)为私钥

    现在就得到3个数,N e d。

    设x为信息

    加密:密文为 y = x^e (mod N) 

    解密:x = y^d (mod N)

    Example:

    取p = 11, q = 5, 所以(p-1)(q-1) = 40

    N = pq = 55, gcd(3, 40) = 1, e = 3

    d = 3^-1 mod 40 = 27

    所以

    加密 y = x^3 mod 55

    解密 x = y^27 mod 55

    RSA安全性在于,若不知道d,知道了y要解出x是很困难的。

  • 相关阅读:
    【转】C++11优化使用emplace,emplace_back
    面试经历总结
    Hive常用函数
    股票指标
    Visual Studio Code 可以翻盘成功主要是因为什么?
    openpyxl模块操作Excel
    JavaScript(二)
    前端之CSS
    ps导出ICO格式
    Qt 所有版本官方下载地址
  • 原文地址:https://www.cnblogs.com/chenyg32/p/3017806.html
Copyright © 2011-2022 走看看