 |
产生序列号的方法大致有以下一些:
1、只使用一个序列号,这个号与用户机器和用户名无关。
Windows安装时就使用这种方法,当然序列号最好比较长,因为这样比较难破解。假如序列号格式是xxxxxxxxx-yy-zzzzzzzz。其中x部分是流水号,从10000000到99999999,y部分是所有x各位的和,z部分是非零各位乘积。那么可以使用下面的代码:
x = "12345678"
y = 0
z = 1
For i = 1 To 8
y = y + Val(Mid(n, i, 1))
If Mid(n, i) <> 0 Then
z = z * Val(Mid(n, i, 1))
End If
Next
Print "注册号:" + n + "-" + Format(y, "00") + "-" + Format(z, "00000000")
检验序列号的方法就是将根据用户输入序列号的前8位计算后面的y和z,然后看看根据你的方法计算出来的号和用户输入的是否一致。
2、根据用户名计算序列号。例如将用户输入的用户名的所有字母ASCII码乘199再加起来,如果用户名短于20位,补满20位,超过20位,只使用前20位。如:
n = "Hai Li"
p = 1
If Len(n) < 20 Then
n = n + String(20 - Len(n), "X")
ElseIf Len(n) > 20 Then
n = Left(n, 20)
End If
For i = 1 To 20
p = p + Asc(Mid(n, i, 1)) * 199
Next
Print "注册号:" + Format(p)
检验序列号的方法就是将根据用户输入的用户名计算一遍,然后看看根据你的方法计算出来的号和用户输入的是否一致。
3、根据用户硬件计算序列号。通常是使用硬盘序列号,可以参考QA001951 "安装序列号一般是以什么为基础生成的"。
4、使用两个函数,一个是根据用户名计算出来一组校验数,另一个是根据序列号计算出来另一组校验数,两个校验数相等,则序列号合法,否则不合法。这样的算法比较复杂,因为要找到合适的函数比较难,但是这样的注册号比较难于破解。
以上仅介绍一些基本原理供初学者参考,至于使用什么样的算法完全取决于你了。你使用的方法越复杂(当然你的程序编起来也麻烦),越难于破解,特别是比较难写出KeyGen,但是这并不等于说无法破解。
相关问题:
QA000088 "VB压缩和加密算法DES程序源代码"
此问题由李海回答。
附加关键字:编程, 源程序, programming, source code, Visual Basic, VB, 其他方面, 。
|