小弟初学,现有个问题想请教各位大大:
如何根据给定的一个不定长度的字符串,得出对应的注册码?
注册码最好是类似于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步时又该如何通过这个注册码反推出加密后的字符串呢?如果这条路走不通,又该如何实现这种功能呢?小弟愚笨,公平请大家帮帮忙,不吝赐教,谢谢。
如何根据给定的一个不定长度的字符串,得出对应的注册码?
注册码最好是类似于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步时又该如何通过这个注册码反推出加密后的字符串呢?如果这条路走不通,又该如何实现这种功能呢?小弟愚笨,公平请大家帮帮忙,不吝赐教,谢谢。
解决方案 »
- c# 对 sqlserver服务器的寻找
- vs2005能用最高版本的nhibernate吗?
- 怎么让窗体一个部分透明?
- 请问{孟子e章},SqlDataAdapter.upDate的事务处理问题??
- 大家请来讨论一下,UML建模的作用!!(回贴有分)
- 高手帮忙了,我们的客户要做一个比较小的桌面应用程序,让我们在VS2008环境下用C++开发,出于开发效率等的考虑,我们想用C#,我该怎么跟客户讲啊,谢谢大家了!
- 基于.net的OpenGL的效率是不是特别低?
- 付费求devpress xtragrid动态添加行、动态添加表头
- .net上传后的文件如何保证安全呢?(web方式)------等待高手答复
- Re: 查找交集算法,有一点难度(欢迎大家讨论)
- 没有标题栏的WinForm窗口如何禁止最大化
- c# winform 如何打开不同目录中的form
我是在您的第四步采用了非对称加密。
在第7步时将注册码按照事先设计好的加密算法再进行一次加密,如果注册码正确,那么程序自己根据机器码计算的和按照注册码计算的应该一致。第8步是程序自己获得机器码自己计算并比较。当然你可以设计各种加密解密思路。
"XXXXX-XXXXX-XXXXX-XXXXX"形式的注册码你可以认为五个一组共四组的字符,我通过散列生成过。这方面的资料去看雪论坛看看,那里的很多。我只是初步用了一下,没有深入。共同学习下。
这个方法是可行的。
我的建议是不要做第4步和第7步,直接把加密后的字符串发给用户作为注册码。PilotEdit就是这样实现的。
你可以参考PilotEdit. http://topic.csdn.net/u/20090723/07/33b39399-81ad-4fb1-a4a2-78509d2161a3.html
注册码用户可以复制下来,然后发给作者,然后作者会把相应的授权码发给用户,用户输入授权码(同样的也是复制过来的,并且把授权码存入config里)
每次进入系统以后判断是否和加密后的授权码相同,如相同都可以用,反之则不能用。