RSA算法在VB注册码软件加密保护中的应用

时间:2022-09-09 11:01:27

RSA算法在VB注册码软件加密保护中的应用

[摘要] 介绍了RSA算法,并以实际开发的软件为例介绍在VB中应用该算法实现注册码软件加密保护的方法;实践证明该方法可以有效地保护注册码软件。

[关键词] RSA算法 VB 注册码软件 加密保护

一、引言

计算机软件是一类特殊商品,极易复制和盗版,为了保护自己的利益,越来越多的软件作者开始采用“一机一码”的注册机制,注册流程是:软件用户通过汇款或银行转账的方式付费后,将电脑的ID(惟一确定一台电脑的硬件信息,一般是硬盘的物理序列号、主板序列号等)通过电子邮件发送给软件作者,软件作者通过一定的加密算法对用户的电脑ID进行加密生成注册码,再通过电子邮件将注册码发送用户进行注册认证成为注册版软件。这种注册机制绑定了注册用户的电脑硬件,可以有效地防止注册码在网络上的非法传播,它的关键是要采用高强度的加密算法,否则,很容易被解密者通过逆向分析写出注册机,导致软件保护彻底失败,严重地损害了开发商的利益。RSA是最流行的非对称算法加密之一,它的突出特点是破解者即使分析出软件中的注册验证算法,也很难推导出注册机的算法,非常适合软件注册码的加密算法。本文以笔者实际开发的共享软件为例介绍该算法在软件加密保护中的应用方法。

二、RSA算法

RSA是最流行的非对称算法加密之一,是既能用于数据加密也能用于数字签名的算法。它的特点是加密密钥不同于解密密钥,而且解密密钥不能根据加密密钥计算出来。该算法可分为三个过程:

(1)选取加密密钥和解密密钥

首先要选取两个大素数:p和q,并计算其乘积n=pq,再随机选取加密密钥―正整数e,使得e和(p-1)(q-1)互素,然后用欧几里得扩展算法计算解密密钥d,以满足

(1)

注意: d和n也互素,e和n是公开密钥,d是私人密钥,两个素数p和q不再需要,它们应该被舍弃,但绝不可泄露。

(2)加密过程

加密过程也就是软件注册码生成的过程。将计算机的ID作为明文信息m,用私人密钥d对m加密,得到密文s

(2)

s就是与计算机ID相对应的注册码。

(3)解密过程

解密过程就是对注册码校验的过程。用户输入注册码或从软件从注册文件中读取注册码s,用公开密钥e对s进行解密得到明文信息

(3)

比较m与m’,如果相等,则s是软件作者给的合法注册码,软件正常运行,否则软件拒绝运行。

由(2)知,注册码的长度取决于n的长度,n的位数越多越安全,在注册码软件加密保护的实际应用中,一般认为RSA算法的密钥需要1024位以上是有安全保障的。

三、用VC编写RSA动态链接库

MIRACL库是一个大数运算库,它提供了大多数密码体制所必需的大数运算,是实现密码系统的一个基本工具。本文用VC调用MIRACL库将RSA算法中的加密解、密函数封装在RSADLL.DLL动态链接库中[3],在VB中使用RSA算法的方法是通过调用动态链接库中加密、解密函数实现注册码软件的加密保护。

四、软件加密保护的测试程序实例

为了更好地演示RSA的加密保护效果,本文编写一个软件注册验证的测试程序和一个注册码生成程序。下面测试程序RSA参数是采用RSATOOL工具生成的128位RAS算法的参数(十六进制),在实际应用中取1024位以上,其中模数是963 251DC5A9C90D9F203A03C363BA411,公钥是10001,私钥是56157D29A89D77BF 2F669A8F0B123CC9。用户电脑ID取硬盘物理序列号,读硬盘序列号的方法请参考文献。

1.软件注册测试程序

程序运行时,显示图1界面,如果输入正确注册码,单击“注册”后,提示注册成功,否则提示注册失败。

图1 注册验证演示程序

2.注册机测试程序

程序运行时,显示图2界面,输入软件用户的机器码,单击“生成注册码”即可生成与机器相对应的注册码。

图2 注册机演示程序

五、结束语

用RSA算法对VB注册码软件进行加密保护,可以有效地防止破解者写出非法注册机。笔者已经成功地用于开发的《C/C++程序设计学习与实验系统》共享软件中,取得了很好的软件加密保护效果。

参考文献:

[1]段刚:加密与解密(第二版)[M].北京:电子工业出版社,2003

[2]王松:Visual C++6.0程序设计与开发指南[M].北京高等教育出版社,1999

[3]赵春生:浅谈利用RSA算法防止非法注册机的制作 www.省略

[4]陆麟:直接从RING3获取硬盘序列号,lu0s1.省略

上一篇:数据挖掘及关联分析在电子商务中的应用研究 下一篇:现代电子商务安全策略