用非对称密码算法制作共享软件的注册码

网上大多数共享软件的注册码(又称为序列号)的设计都不是很好,比较容易被破解者做出注册机来。下面介绍一种利用公钥算法(又称为非对称算法)RSA制作注册码的方法。采用这种方法,不知道密钥的话时很难写出注册机来。实际上有部分软件已经使用了这类方法。

大家都知道RSA采用一对密钥,即公钥和私钥,从公钥难于推出私钥,反之亦然,这个难度是基于大数分解的难度。利用RSA生成共享软件注册码的思路如下:

1、先随机生成一对公钥E和私钥D;

2、软件作者自己写一个注册机,注册机完成的工作就是把用户名M用私钥D加密,密文C就是注册码。由于密文往往包含不可显示字符,所以最好把密文进行编码,变成可显示字符,比如采用base64、uuencode编码等。

密文C = (M ^ D) mod N

其中^表示乘幂,mod表示求余,N为RSA的模数。

3、共享软件将用户输入的注册码先进行解码(如base64解码等),得到密文,然后用公钥E对密文进行解密,得到明文M',如果明文和用户名相同(即满足M' = M),则说明注册码正确,否则就是非法的注册码。破解者可以通过跟踪你的软件得到公钥E,但无法得到私钥D。

明文M' = (C ^ E) mod D

有几点需要说明:

1、模数N太短时不安全,容易被分解。以目前的计算能力,建议N取值在512-bit以上。但这样注册码的长度也变长了,可能给用户带来不方便。一般要采用大数运算库来实现RSA。

2、随机生成密钥对时,要采用尽可能好的随机数生成算法,否则N还是很有可能被分解。

3、也可以在注册机中用公钥E对用户名加密得到注册码,在软件中对用户输入的注册码用私钥D进行解密得到用户名。此时公钥E就不能取常用的3、65537等固定值,否则一旦被猜出E,则也可以写出注册机,因为此时破解者可以从你的软件中得到私钥D。

4、这种方法只是为了防止被人写出注册机,它无法防止通过修改程序中跳转指令的方法来破解你的软件。为了防止别人修改你的程序文件,可以用注册码中的一部分来加密你的程序代码或数据。

5、这种方法稍加改动即可防止正版用户散发注册码,即采用一机一码的方法,将用户名替换成用户机器的硬软件信息即可,这个硬软件信息应能唯一地表示用户的机器,否则也容易被伪造。

6、采用了上面的方法之后,只有知道至少一个合法注册码的人才能将程序破解。

下面举一个例子,采用大数运算库Freelip(http://www.und.nodak.edu/org/crypto/crypto/numbers/programs/freelip/freelip_1.1.tar.gz)来实现RSA。该库是用C写的,商业使用需要许可证。

1、首先随机生成密钥对。可以自己编程随机搜索大素数。此处由于是举例,我们采用RSATool(http://www.secretashell.com/TMG/RSATool2v15.zip)生成64-bit RSA的参数:

大素数P = A57F2B33, 大素数Q = E7C441B3, 模数N = 95D49FD119EF27A9, 私钥D = 76D2A6E2AC86CC99, 公钥E = 65537

2、制作注册机。将用户名用私钥D进行加密,得到的密文作为注册码:

首先定义宏WIN32(VC自带,但BCB中需要自己定义),然后包含头文件"lip.h":

#ifndef WIN32

#define WIN32

#endif

#include "lip.h"

并把"lip.c"加入到project中。

然后将用户名的ASCII码转换成相应的十六进制串:

char UserName[] = "4E6574677579";

char SerialNumber[256];

verylong N = 0, D = 0, M = 0, C = 0; //Freelip中的大数类型为verylong。

zhsread( UserName, &M); //初始化明文M,M等于用户名的十六进制表示

zhsread("95D49FD119EF27A9", &N); //初始化模数N

zhsread("76D2A6E2AC86CC99", &D); //初始化私钥D

zexpmod(M, D, N, &C); //计算密文C = (M ^ D) mod N

zswrite(SerialNumber, C); //将C的十进制串表示写入SerialNumber中,即为注册码

时间: 2024-10-31 12:44:19

用非对称密码算法制作共享软件的注册码的相关文章

使用.NET自带的功能制作简单的注册码

加密可以帮助保护数据不被查看和修改,并且可以帮助在本不安全的信道上提供安全的通信方式.例如,可以使用加密算法对数据进行加密,在加密状态下传输数据,然后由预定的接收方对数据进行解密.如果第三方截获了加密的数据,解密数据是很困难的. 为了达到这些目的,您可以使用算法和惯例的组合(称作加密基元)来创建加密方案.包括私钥加密(对称加密).公钥加密(不对称加密).加密签名和加密哈希. 我们使用公钥加密(不对称加密)来实现注册码的算法. 公钥加密使用一个必须对未经授权的用户保密的私钥和一个可以对任何人公开的

UltraISO PE V8.6.1.1985_绿色多国语言版_光盘映像制作 下载 附注册码_常用工具

UltraISO 是一款功能强大而又方便实用的光盘映像文件制作/编辑/格式转换工具,它可以直接编辑光盘映像和从映像中直接提取文件,也可以从CD-ROM制作光盘映像或者将硬盘上的文件制作成ISO文件.同时,你也可以处理ISO文件的启动信息,从而制作可引导光盘.使用UltraISO,你可以随心所欲地制作/编辑光盘. UltraISO软碟通是一款光盘映像ISO文件编辑制作工具,它可以图形化地从光盘.硬盘制作和编辑ISO文件.UltraISO可以做到:1.从CD-ROM制作光盘的映像文件.2.将硬盘.光

C++数据结构与算法专题

快速排序算法的C++实现 详解qsort函数的用法 C++求二个数的最大公约数与最小公倍数实例 小览CallStack(调用栈)(三)-用调试器脚本查看调用栈信息 小览call stack(调用栈) (二)--调用约定 小览call stack(调用栈) (一) C++/CLI中栈对象的设计问题 POJ 1694 C++ (排序) 高效实现Josephus算法 利用堆排序实现学生成绩管理 C++双向循环链表的操作与实现 基于Crtpto++的RSA签名算法 自定义函数使用map排序 C++数据结

Pew:算法时代七大主题及其主要影响

全球权威调查机构皮尤研究所日前发布报告<算法时代>,采访千余专家,分7大主题探讨算法对生活各方各面的影响.报告的目标是客观全面反映当前人们对即将到来的算法时代的看法,结果仅38%的特定受访者预测算法的积极影响将超过其负面影响,而37%的人认为负面性超过积极性;25%表示算法的整体影响将保持在50%-50%左右.算法势必无处不在,对于未来,你抱有希望吗? 算法是解决问题或完成任务的指示说明.配方是算法,数学公式也是算法.计算机代码还是算法.互联网依靠算法运行,所有的在线搜索都通过算法完成.有了算

如何防止量子计算暴力解密?中国启动新型算法研究

随着量子计算的不断突破,其计算机能力的大幅跃升将为网络安全带来新挑战--许多加密算法将会变得相当脆弱.未来,如何应对量子计算对数据的"暴力解密"?当前移动互联网.云计算.大数据.物联网快速融合发展,对密码算法能力提出的新挑战如何应对? 日前,为应对量子计算攻击威胁,移动互联网.云计算等领域数据可信融合安全挑战,国家"网络空间安全"重点专项中唯一的密码算法项目"新型数据保护密码算法研究"项目在成都启动. 由中国电子科技集团公司第三十研究所牵头的该项

MyEclipse5.0M1注册码+eclipse3.2[J2EE]_常用工具

MyEclipse5.0M1支持eclipse目前最新版本eclipse3.2, 先下载试用了下,发现eclipse3.2比3.1更好用了.. 安装及配置方法不再多说.本blog第一篇文章已经讲得很清楚了. MyEclipse5.0M1注册码也算了个出来.另附上java算法文件, MyEclipse5.0M1注册码如下: License Name : www.whitehouse.net.cn License Key : jLR8ZC-444-55-4467865646713334 MyEcli

一种混合加密方案在软件授权中的应用

拥有知识产权的软件一般采取软件保护手段,需要使用某种方式激活软件才可以使用.软件激活本质是对密文数据进行比较,而密文数据是由软件开发商根据目标机器的特征数据进行加密产生的.激活过程是在认证服务器或者目标机器上完成,在这个过程中,数据加密方案至关重要,设计良好的加密方案,难以被破解.复制或盗用,软件保护工作做的很完善.本文分析现有软件保护方式,借鉴基础软件加密算法基础上,设计出一种高强度.难破解的混合加密方案,并在软件工程实践中验证该混合加密方案的可行性. 1 软件保护 为了保护软件开发商的权益,

你不知道网络安全有多严峻

上周六受到企业的邀请讲网络安全,这篇博客是内容的整理. 随着大数据.AI(人工智能)与互联网络的高速发展新的网络安全问题变得越来越严峻,自己身边时不时总有人被网络诈骗,为了更少的人被攻击写了这些文字.   一.网络安全形式严峻 我国从事网络与电信诈骗人数:160万 我国去年网络与电信涉案金额:1152亿 大学生防网络与电信诈骗合格数不足:30%(其它人群估计负数了) 网络与电信诈骗的源发地在境外约:90%  网络上每分钟被手机病毒与木马攻击约:1000000次   大数据与人工智能与其它方面带来

也许下一个倾家荡产的就是你(新形式下的网络安全)

上周六受到企业的邀请讲网络安全,这篇博客是内容的整理. 随着大数据.AI(人工智能)与互联网络的高速发展新的网络安全问题变得越来越严峻,自己身边时不时总有人被网络诈骗,为了更少的人被攻击写了这些文字.   一.网络安全形式严峻 我国从事网络与电信诈骗人数:160万 我国去年网络与电信涉案金额:1152亿 大学生防网络与电信诈骗合格数不足:30%(其它人群估计负数了) 网络与电信诈骗的源发地在境外约:90%  网络上每分钟被手机病毒与木马攻击约:1000000次   大数据与人工智能与其它方面带来