能力值:
( LV12,RANK:370 )
|
-
-
2 楼
左右应该使用不同的变换函数F,而且必须有一个是可逆的变换.
|
能力值:
( LV12,RANK:250 )
|
-
-
3 楼
F(用户名)一般不可逆,算出个中间码!!
G(序列号)可逆,即G(中间码)=序列号,G(序列号)=中间码
你注册机可以这样写,先用用户算出中间码,然后用G(中间码)算出注册码,程序里面就if G(注册码)!=F(用户名)
当然上面只是参考。
|
能力值:
(RANK:760 )
|
-
-
4 楼
不是同一个函数。
举一个最简单的可以用于实际的例子:
软件注册验证模块如下:
temp1=SHA-1(UserName)
temp2=RSA_Encrypt(License Key)
if temp1==temp2,则注册成功,否则失败
共享软件作者可以用如下的方法生成License Key:
temp1=SHA-1(UserName)
License Key=RSA_Decrypt(temp1)
此倒中只要选择的RSA参数能满足正确的加解密就可以了。
你也可以换成其它的散列算法,或者换成对称的也可以。
其实还有更安全和方便的方法:数字签名,如ECDSA,但需要一些相关的知识方可使用,否则只会适得其反。
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
谢谢各位,特别是cnbragon大侠。收获真是太大了!
|
|
|