注册机制现在,我有时间去关注软件盗版问题,我将描述一下我的注册方法,希望对你有所帮助。 几年以来,我有过许多的方案,有的简单,有的复杂,其目的都是为了防止软件的非法使用。这些方法包括两种:硬件方法和软件方法。 当然,有很多方法提供注册保护,例如购买第三方保护软件,但是我想尝试开发自己的方法,因为我想弄清楚这个问题。 在讨论之前,我略微提一下我以前使用过的方法。 最稳妥和最不安全的办法是提供两种版本:试用版和完整版。当用户注册了你的软件之后,他们就得到一个URL去下载完整版本。完整版 下一个方法是提供用户一个由用户名生成的注册码(公司名可选)。现在软件可以为注册用户使用了。用户可以把软件给其他人使用, 最后是上一个方法的改良。注册码还是基于版本号,用户可以继续使用老的注册码来进行小的升级,但版本的大改动就需要用户重新注册 我的办法是在报表上打印和在屏幕上显示最后的用户名和公司名,在证券公司,发票上有程序所打印的公司名,这样即使非法用户有我的 现在,问题变成:生成一个基于字符串的唯一值,只要串发生改变,就会引起代码运算出一个不同的值。 解决的办法是使用程序名、用户名、公司名以及版本号作为运算字符串。如果没有输入公司名,就用缺省值代替,这样做的问题是会引起 我是一个电子工程师,在通讯行业里需要一种方法来确定传输的数据是无误的,一般的方法就是CRC。CRC已经使用了20年,我不知道CRC 因此我使用32位的CRC算法得出8位的注册码,有个问题:如果用于运算的字符串没有进行任何的加密就太简单了。所以我使用Delphi的加 我没有做完全的测试,只做了局部的测试,但我保证代码是有效的,特别要提醒的是:CRC结构是基于polynomial modulo算法的,不要修 我可能很苯,但我不傻:)。下面的代码不是我所使用的,但这些代码很好的演示了我的注册方法是如何工作的。 现在,让我们看看代码。 请注意:我使用了前缀(CamelCase(sic)),以下是定义: c : 字符型 参数范围: 其它的都符合以上规则。 所有的函数和过程都以'SSL'为前缀,以避免与其他函数和过程重名。这个前缀已在Delphi Prefix Register注册。 unit Registration; {------------------------------------------------------------------------------} uses function Mod95(pnVal : Integer): Integer; forward; function SSLEncode(pcName: String; pcCompany: String; pcAppTitle: String; pcMajor: String): String; forward; function SSLGenerateKey(pcName, pcCompany, pcApplication, pcMajor : string) : String; forward; function SSLCrypt(pcString : PChar; pnSeed : Integer = 0) : String ; forward function CRCExecute(pcString : String) : String ; forward; var {------------------------------------------------------------------------------} const const CRCTable : array [0..255] of LongWord =( $1db71064, $6ab020f2, $f3b97148, $84be41de, $3b6e20c8, $4c69105e, $d56041e4, $a2677172, $26d930ac, $51de003a, $c8d75180, $bfd06116, $76dc4190, $01db7106, $98d220bc, $efd5102a, $6b6b51f4, $1c6c6162, $856530d8, $f262004e, 上一篇:随心所欲取颜色(鼠标经过的地方颜色值均可取到) 下一篇:与文件相关Api函数列表 更多相关文章
|
推荐文章
精彩文章
|