日期:2014-05-18  浏览次数:20762 次

请教关于注册码的算法?
小弟初学,现有个问题想请教各位大大: 
如何根据给定的一个不定长度的字符串,得出对应的注册码? 
注册码最好是类似于XXXXX-XXXXX-XXXXX-XXXXX(字母和数字的组合)这种的。 
重点是要可以通过注册码反推出原本给定的字符串。 

我大概有个思路,就是不知道是否可以实现呢? 

1.程序通过硬件信息(CPU ID或硬盘ID)得出机器码; 
2.客户将机器码发送给作者; 
3.作者将机器码经RSA加密后得出加密的字符串; 
4.作者将加密的字符串变换为类似于"XXXXX-XXXXX-XXXXX-XXXXX"等形式的注册码; 
5.作者将注册码发送给客户; 
6.客户输入注册码; 
7.程序将注册码变换为加密的字符串; 
8.程序将加密的字符串经RSA解密后得出机器码; 
9.程序检验机器码是否与本机硬件相符后判定是否注册成功。 

  以上是我一个大致的思路。现在的问题是,如果按照这个思路走,其它的步骤都没有问题,关键在于第4和第7步。也就是不知道在第4步时如何将加密后的字符串变成类似于"XXXXX-XXXXX-XXXXX-XXXXX"等形式的注册码,而在第7步时又该如何通过这个注册码反推出加密后的字符串呢?如果这条路走不通,又该如何实现这种功能呢?

小弟愚笨,公平请大家帮帮忙,不吝赐教,谢谢。 


------解决方案--------------------
个人感觉,不一定非要用对称加密算法。
我是在您的第四步采用了非对称加密。
在第7步时将注册码按照事先设计好的加密算法再进行一次加密,如果注册码正确,那么程序自己根据机器码计算的和按照注册码计算的应该一致。第8步是程序自己获得机器码自己计算并比较。

当然你可以设计各种加密解密思路。
"XXXXX-XXXXX-XXXXX-XXXXX"形式的注册码你可以认为五个一组共四组的字符,我通过散列生成过。

这方面的资料去看雪论坛看看,那里的很多。

我只是初步用了一下,没有深入。共同学习下。
------解决方案--------------------
还有:我软件现在加密和你的思路一样。

但是就是第4步用了非对称加密。

最后你可以从非对称加密的字符串里提取特定的20个字符,进行存储,

在软件的注册里用同样的算法。再进行比较。

最后存为App.config文件里。

------解决方案--------------------
探讨
小弟初学,现有个问题想请教各位大大:
如何根据给定的一个不定长度的字符串,得出对应的注册码?
注册码最好是类似于XXXXX-XXXXX-XXXXX-XXXXX(字母和数字的组合)这种的。
重点是要可以通过注册码反推出原本给定的字符串。

我大概有个思路,就是不知道是否可以实现呢?

1.程序通过硬件信息(CPU ID或硬盘ID)得出机器码;
2.客户将机器码发送给作者;
3.作者将机器码经RSA加密后得出加密的字符串;
4.作者将加密的字符串变换为类似于"XXXXX-XXXXX-XXXXX-XXXXX"等形式的注册码;
5.作者将注册码发送给客户;
6.客户输入注册码;
7.程序将注册码变换为加密的字符串;
8.程序将加密的字符串经RSA解密后得出机器码;
9.程序检验机器码是否与本机硬件相符后判定是否注册成功。

    以上是我一个大致的思路。现在的问题是,如果按照这个思路走,其它的步骤都没有问题,关键在于第4和第7步。也就是不知道在第4步时如何将加密后的字符串变成类似于"XXXXX-XXXXX-XXXXX-XXXXX"等形式的注册码,而在第7步时又该如何通过这个注册码反推出加密后的字符串呢?如果这条路走不通,又该如何实现这种功能呢?

小弟愚笨,公平请大家帮帮忙,不吝赐教,谢谢。


------解决方案--------------------
第4步比较麻烦,因为设计到具体的算法
第7步:提取文本框里面的内容,然后对字符串进行处理,把'-',替换成''空格。
然后再加密。
你程序打开的时候获取一些信息,然后和上面的第7步相同。