欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

关于 protectz v1.53 RSA 算法的一点理解 (2千字)

关于 protectz v1.53 RSA 算法的一点理解 (2千字)

RSA算法简述:
1、取两个素数p和q。
2、计算n=pq,f=(p-1)(q-1)。
3、随机选取整数e,满足条件gcd(e, f)=1,其中gcd为最大公约数。
4、计算d,使得乘积de对f求余的结果为1,即de和1对f同余。
上述只有e和n对外公开,用于加密。
加密过程(符号^表示乘幂,mod表示求余):
    e为加密密钥,假定明文为m,则密文c = (m ^ e) mod n。
解密过程:
    d为解密密钥,则解密得到的明文m'= (c ^ d) mod n。
                       
                  --------摘自《论坛精华3》-------《Windows优化大师v2.9+的注册码加密算法》
                                                                written by dr0, 2000/08/22
===============================================================================================
  程序中明显的可以看出:e=7,n=0xbb=187=11*17
                  所以:p=11,q=17
                        n=p*q=11*17=187
                        f=(p-1)*(q-1)=160
                        gcd(e,f)=1
                又因为:(d*e)%f=1
                也就是:(d*7)%160=1
                  所以:(d*7)=a*160+1
                  假设:a=1
                    则:d=161/7=23
现在看看我们得到了什么:p=11, q=17, n=p*q=187, f=(p-1)*(q-1)=160, d=23, e=7
================================================================================================
程序中主要的计算过程是:
假设:已知0xi是一个两位的16进制数
  (1) 1*0xi==0xi
  (2) 如果 0xi*0xi>=0x8899  则取余--(0xi*0xi)%0x8899,余数参与下面计算
      否则用0xi*0xi参与下面计算
  (3) 如果 ((2)的结果*0xi)>=0x8899 则取余--((2)的结果*0xi)%0x8899,余数参与下面计算
      否则用(2)的结果*0xi)参与下面计算,以下同
  (4) 同上
  (5) 同上
  (6) 同上
  (7) 同上
  (8) 最后取余--(7)的结果%0xbb==A
   
其中A就是已知的密文,0xi就是我们要求的明文,上面那一段其实就是:A=(0xi^7) mod 0xbb
于是可以进行一下逆运算:0xi=(A^23) mod 0xbb
================================================================================================
本文是参考了“最弱智”大哥的keygen写成的,感谢!
          ,;~;,
                /\_
              (  /
              (()      //)
              | \\  ,,;;'\
          __ _(  )m=(lancelot(================--------
        /'  ' '()/~' '.(, |
      ,;(      )||    |  ~
    ,;' \    /-(.;,  )            兰斯洛特[CCG][FCG]
          ) /      ) /
        //        ||                      2001.09.26
        )_\        )_\
========================================================

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功