zoukankan      html  css  js  c++  java
  • PQ rsa 练习

    1,找两个很大的素数(质数)P 和 Q,越大越好,比如 100 位长的, 然后计算它们的乘积
    N=P×Q,M=(P-1)×(Q-1)。

    2,找一个和 M 互素的整数 E,也就是说 M 和 E 除了 1
    以外没有公约数。

    3,找一个整数 D,使得 E×D 除以 M 余 1,即 E×D mod M =
    1。

    现在,世界上先进的、最常用的密码系统就设计好了,其中 E 是公钥谁都可以用来加密,D 是私钥用于解密,一定要自己保存好。乘积 N
    是公开的,即使敌人知道了也没关系。

    现在,我们用下面的公式对 X 加密,得到密码 Y。
       


    好了,现在没有密钥
    D,神仙也无法从 Y 中恢复 X。如果知道 D,根据费尔马小定理,则只要按下面的公式就可以轻而易举地从 Y 中得到 X。
       


    P=5  Q =7

    N= 5 *7 =35

    M = 4 *6 =24

    选择E =11

    D 可以 为  11 35 59

    对 1-20 加密  =myMOD( A1,11,35)

    1 1
    2 18
    3 12
    4 9
    5 10
    6 6
    7 28
    8 22
    9 4
    10 5
    11 16
    12 3
    13 27
    14 14
    15 15
    16 11
    17 33
    18 2
    19 24
    20 20

    解密使用 D=59 =myMOD( B1,59,35)

    1 1
    18 2
    12 3
    9 4
    10 5
    6 6
    28 7
    22 8
    4 9
    5 10
    16 11
    3 12
    27 13
    14 14
    15 15
    11 16
    33 17
    2 18
    24 19
    20 20

    Function myMod(a As Integer, i As Integer, m As Integer) As Integer

    myMod = 1

    For j = 1 To i myMod = myMod * a

    While myMod > m  

    myMod = myMod - m

    Wend

    Next j

    End Function

  • 相关阅读:
    2016第13周四
    2016第13周周三
    2016第13周二
    2016第13周一
    2016第12周日
    2016第11周五
    2016第11周四
    前端的自我成长
    Java单例模式和volatile关键字
    大约 Apple Metal API 一些想法
  • 原文地址:https://www.cnblogs.com/cndavy/p/3178263.html
Copyright © 2011-2022 走看看