• RSA算法小记


    学习来源:http://www.cnblogs.com/vamei/p/3480994.html

    小记:

    一、数学基础:

      欧拉Phi函数:Φ(n)=总数(从1到n-1中与n互质的整数) 

    (1)欧拉定理:对互质的正整数 a,n,有a^(Φ(n))-1能被n整除 

        当n是质数p时,Φ(p)=p-1,有特殊情况,即小费马定理:a^(p-1)-1 能被n整除

    (2)关于欧拉函数的推论:Φ(mn)=Φ(m)Φ(n)

    (3)(ab)|(n)=(a|n)(b|n)

    二、RSA算法的加密和解密

    1、任选互质的 p、q,求积:n=pq

    2、求得 k=Φ(n)=(p-1)(q-1)

    3、任选与 k互质的 d

    4、取整数 e,使得 ed=kt+1,即 (ed)|k=1

    则 公钥: d  n  (e用来算乘方,d用来取余)  密钥:e   n  (d用来求乘方,n用来取余)

    注意:n应尽量大,这样不易被破解;n应大于被加密数的最大值,否则不同数被加密后可能一样,这样就无法解密还原了。总之,n应尽量大。

            由此也可知,只能加密小于n的数

    例:

    以p=2,q=7为例,则n=14,k=6;

    取d=5,由ed|k=1即5e|6=1可取e=11;

    则 公钥:5,14;          密钥:11,14

    数据 2 用公钥 5,14 加密得到 (2^5)|14=4,用 11,14解密得 (4^11)|14=2

    注意:n应大于被加密数的最大值,否则不同数被加密后可能一样,这样就无法解密还原了:如 3|14=17|14=3,这样对被加密的3和17无法还原,因为其密文一样。

  • 相关阅读:
    webpack篇
    js 中对于this 的理解的 经典案例
    AMD、CMD、CommonJs和es6对比
    vue import异步加载js
    vscode 保存自动 格式化eslint 代码
    git设置
    面向对象的三大特性之继承
    面向对象 类与对象及其属性与方法 类的组合
    hashlib模块 hash算法
    configparser模块 配置文件的解析操作
  • 原文地址:https://www.cnblogs.com/z-sm/p/3488425.html
Copyright © 2020-2023  润新知