网站逆向分析js之RSA算法原理

  • 传统密码无论加密解密都用了一个密码

  • rsa非对称性加密由一对密钥组成,配对使用

  • public key(代号’e’),公钥,专门用来加密,可以由多人掌管

  • private key(代号’d’),私钥,专门用来解密,由主人自己进行保管

  • 一般公开发布公钥,自己用私钥进行解密


举个例子,我是B:

A 想要发送’Hello World’一个字符串给我, A 必须在我这拿一个公钥(e),用公钥(e)加密了这段文字,然后通过网络发送给我,我用私钥(d)就可以把加密后的东西给解开,解开后可以看到里面的内容


原理

用到的知识
  • 质数: 大于1的自然数,只能被1和本身整除

1.选择两个非常非常大的质数(数字越远,越难被解密)

  • 举个例子:
  • 1.选择两个质数
    • p = 3, q = 11
  • 2.设一个变量n = p * q

    • 也就是n = 3 * 11 = 33
  • 3.设一个欧拉函数Z = (p - 1)(q - 1)

    • 也就是Z = 2 * 10 = 20
    • 作用是取值范围
  • 4.设一个e 加密密码,必须满足以下条件, 比如 7

    • 范围在1 < e < Z
    • e和n互质(只有最大公约数为1)

计算过程用python环境来计算,不要用计算器,值会不正确


  • 5.设一个d解密密码,必须满足以下条件
    • (d * e) % Z = 1
    • —————————–
    • 也就是7d % 20 = 1
    • 窍门: 20 + 1就是符合的值
    • 7d = 21
    • d = 3

有一条消息m,值为2,即m=2,加密成密文C

加密过程:

C = me % n

C = 27 % 33 = 29


此时在网络传输过程中是29


解密过程

m’ = Cd % n

m’ = 24389 % 33 = v24389/33 = 2


此时完成了加密解密的过程,最后解密结果是2

你可能感兴趣的:(Spider)