<b>同享软件注册部份的简单实现</b>[VC/C++编程]
本文“<b>同享软件注册部份的简单实现</b>[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
目前,很多同享软件中利用注册码来实现对软件的保护.所谓注册码,就是一组与用户的某些特定信息(如用户名称、计算机硬件等等)相关的字符串.由于注册码传输起来对比简单,同时简单考证(相关于磁盘、光盘指纹等),因此目前注册码的利用越来越遍及,乃至一些商业软件,如Windows XP也利用了近似的机制(Microsoft称为Windows Product Activation).
谈起注册码,就不能不提注册器.注册器是用来产生注册码的程序,其计算逻辑普通与受保护的利用程序一致.通过与受保护利用程序相同,或预先约定的计算逻辑得到的注册号,将决意受保护利用程序的行为,如显示“软件未注册”、禁用某些功效,或在“关于”对话框中显示注册者的姓名,等等.
此中,终究用户通过某种方法提交其注册信息,比方他(或他所在的组织)的名字,乃至极度一些,供应某些可以肯定某人身份的信息,如Pentium III CPU的CPU ID,硬盘的序列号,网卡的MAC地址等等.然后,注册服务器,或呼唤中央的服务人员按照用户供应的信息,计算一个注册号,并奉告终究用户.
普通,由于人工操作大概造成不对,我们但愿注册历程由计算机自动实现.不过这就带来了一个问题:用户凭什么相信我们的程序并不会泄露他的个人隐私呢?针对这一问题,目前风行的做法是供应若干选项,此中包含电话注册,网络注册,以及平信注册等等,并把程序提交的内容奉告用户.
此外,某些与用户的电脑相关的信息,如配置等等,不宜利用明文传送.这一方面是由于用户大概不肯意将这些信息泄露给我们,另一方面是以明文传送信息大概会招致第三方(如cracker)截获信息.目前对比风行的办法是把那些我们并不需求,但却决意用户身份的信息用某种散列算法举行编码然后再发送.当然,在发送历程中我们可以利用SSL加密,大概其他一些办法来保证安全,由于与本文的主要内容关系不大,在此不赘述,读者可参考相关书籍.
需求保密的用户信息→ 散列算法 → 安全传输(如SSL) →服务器
就笔者个人的经验,计算注册码和考证注册码利用差别的算法,可以在一定程度上提高注册历程的安全性.当然,任何安全办法都不大概保证不被解密,“世界上没有打不开的锁”,解密只是一个时间问题,在构造注册码算法的时刻,只要让解密代价大于软件代价便可,没必要做得太复杂.
作为用户而言,无论是用什么注册方法,他都不但愿过于复杂.通过计算机直接注册的方法无疑是最便利的,但很多用户大概不肯意这样做.作为用户来说,通过电话注册这种方法,说出自己的注册ID(普通包含了产品ID、用户的名字等信息),以及输入注册码应当是各种注册方法中最麻烦的一种.
注册ID和注册码应当具有以下特点:
(1)便于辨认、输入.注册码不是密码,没有必如果用大量的特别标记、大小写组合.因此,注册码和注册ID中不该该包含差别大小写的字母,以及简单混合的数字(1-I,0-O,2-Z).
(2)具有查错本领.统计证明,输入注册码时,错序(如把1234输入成1243)、击键错误是最常见的错误.对比常用的办法是把注册码分成若干节,每节包含一个校验码,这样注册码就具有查错本领了.
为了表现上面的要求,我构造了一个这样的算法:
(1)计算输入的用户名,并按照下面的法则计算和:
设后果为a,预置为0
按次序取用户名字符串的每一个字符的ASCII值,乘上位号,累加到a上.
比方:
J a s o n L i
1 2 3 4 5 6 7 8
这样,a=(char)’J’+((char)’a’)*2+((char)’s’)*3+...
以上是“<b>同享软件注册部份的简单实现</b>[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |