浅谈利用RSA算法防止非法注册机的制作

2016-01-29 12:13 53 1 收藏

浅谈利用RSA算法防止非法注册机的制作,浅谈利用RSA算法防止非法注册机的制作

【 tulaoshi.com - C语言心得技巧 】

浅谈利用RSA算法防止非法注册机的制作


作者:赵春生

下载源代码

一、RSA简介

  RSA公开密钥密码系统是由R.Rivest,A.Shamir,L.Adleman提出的,不仅仅可用于数据的加密,也可用于数字签名,其算法如下:

1、取两个相近的大素数p、q; 2、计算n=p*q,z=(p-1)*(q-1); 3、任取一个与z互素的整数e; 4、计算满足e*d=1 mod z 的整数d; 5、将明文m分成字符块s加密,每个块s小于n。现设明文m小于n,加密后形成密文c。 加密、解密过程如下:
          加密:c=m^e mod n          解密:m=c^d mod n
6、(n,e)和(n,d)分别称为“公开密钥”和“秘密密钥”。根据Euler定理可得:
          m=c^d mod n=(m^e mod n)^d mod n=m

  现举例说明其工作过程:取两个素数p=11,q=13,n=p*q=11*13=143,z=(p-1)*(q-1)=(11-1)*(13-1)=120,再选取与z=120互素的整数e,如e=7,现可计算出满足7*d=1 mod 120的整数d=103,即:7*103=1 mod 120,7*103/120余1,整理如下:

  p=11  q=13  n=143  e=7  d=103  (n,e)=(143,7)  (n,d)=(143,103)

  以数据加密为例:

  甲向乙发送机密数据信息m=85,并已知乙的公钥(n,e)=(143,7),于是可计算出:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com)
   c=m^e mod n=85^7 mod 143=123

  甲将c发送至乙,乙利用私钥(n,d)=(143,103)对c进行计算:

   m=c^d mod n=123^103 mod 143=85

  现乙已经得到甲向其要发送的机密数据信息。在这里,甲向乙发送信息,甲所拥有的仅仅是乙的公钥。

以数字签名为例:

  乙要向甲发送信息,并要让甲确信此信息是由乙本人所发出的,于是,乙将能代表自己身份的编码值(如:123),利用私钥(n,d)=(143,103)进行计算,并将结果发送给甲:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com)
    m=c^d mod n=123^103 mod 143=85

  甲接受到乙的数字签名后利用乙的公钥(n,e)=(143,7)进行计算,得出代表乙身份的编码:

    c=m^e mod n=85^7 mod 143=123

  现甲经过验证已确信信息的发送方为乙。因为只有乙拥有私钥(n,d),来对代表自己身份的编码123进行计算。在不知道乙私钥(n,d)的情况下,任何人都不会算出85这一签名来冒充乙。在这里,乙向甲发送信息并进行签名,甲所拥有的也仅仅是乙的公钥来验证乙的签名。
  从上面两个例子中我们可以更好得理解这一结论,即:由(n,e)加密的数据只能用(n,d)解密,反之亦然。

二、在基于序列号保护的共享软件中应用RSA

  结合数字签名的实例能更好得理解这一应用:在某一共享软件中,甲想用123为注册名进行软件注册,他现在拥有的仅仅是存在于共享软件程序中的公钥(n,e)=(143,7)。甲现将123为注册名向乙提出注册申请,乙得知此申请并通过此申请后,便利用所拥有的私钥(n,d)对注册名123进行计算:

m=c^d mod n=123^103 mod 143=85

甲得到计算后的结果85(序列号),提供给共享软件的注册程序进行计算:

c=m^e mod n=85^7 mod 143=123

然后注册程序将判断计算结果c是否为123(注册名),以决定注册是否通过。

  如果甲随意输入一组序列号利用公钥(n,e)进行计算,那他得到的结果将不是123,注册也就失败了。注意,在这里,共享软件的注册程序比较的是注册名,而不是序列号。如果甲跟踪注册程序得到了他所随意输入的序列号所产生的注册名,将其提供给注册程序,那注册程序也能够通过注册,但他由于没有(n,d),所以他无法用自己的注册名进行软件注册,也就防止了非法注册机的制作。
  将RSA应用于此的目的仅仅是防止非法注册机的制作,在以上描述中,n=143,包括以下Demo中的n(HEX)=963251DC5A9C90D9F203A03C363BA411,以现在的计算机处理速度,能很快地将其因式分解得到相应的p,q,再结合暴露在共享软件注册程序中的e,从而计算出d,那么这个共享软件的保护就完全被破解了。解决的方法是要避免n过短,以及结合MD5等加密算法……

三、具体实践

/* R

来源:http://www.tulaoshi.com/n/20160129/1485127.html

延伸阅读
标签: ASP
       老外真是聪明,这个方法也想得到,有兴趣的不妨试试,但是如果对方的服务器安全搞的很好的话,这个代码也许就不能用了,但不管怎么样,学习一下也是好的,:)            <% Response.Buffer = True %>   <% Server.ScriptTimeout = 500...
DES加密介绍 DES是一种对称加密算法,所谓对称加密算法即:加密和解密使用相同密钥的算法。DES加密算法出自IBM的研究,后来被美国政府正式采用,之后开始广泛流传,但是近些年使用越来越少,因为DES使用56位密钥,以现代计算能力,24小时内即可被破解。虽然如此,在某些简单应用中,我们还是可以使用DES加密算法,本文简单讲解DES的JAVA实现...
我想每个计算机专业的学生或多或少都接触过哈夫曼编码,数据结构中的老问题了。大体就是给出一些字符,和这些字符的出现频率,让你为这些字符设计一个二进制编码,要求频率最高的字符的编码最短。解决的方法是构造一棵哈夫曼树(二叉树),其基本思路是,每次从这些字符中挑出两个频率最低的,然后构造一个新的结点,使新结点的左右孩子指针分别...
标签: flash教程
本文由 中国 sanbos 原创,转载请保留此信息! 效果演示: [next] 这是一个用遮照做的x光机效果,用鼠标拖动镜头在人体上点击时,可透视人体内部器官。如图:   教程: 1.首先准备两张图片,一张人物图片,一张人体内部图片,运用图象处理软件将人体内部图片的内脏部分组合到人物图片上,形成...
铁路12306手机如何注册   1)首先下载铁路12306软件,并且认清标示,铁路12306应用图标为蓝白底色,上方为红色的中国铁路路徽,路徽下方标有中国铁路字样,进入后点击下方我的12306,输入你的用户名和密码等信息。   2)输入身份信息后点击注册,注册成功后那么即可开始车票的预定。  

经验教程

477

收藏

50
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部