我正在用C实现一个小应用程序,我想以后以合理的价格将它作为共享软件出售。它将以30天的试验开始,我已经很确定如何实现它。
不过,我遇到的问题是,我不太确定如何实现产品密钥验证。我想的是,客户可以在我的网页上注册(在试用了一段时间后),支付产品费用,并通过电子邮件(或者可以通过他的个人资料在我的网站上获得)以aaaaa-bbbbb ccccc-ddddd的形式获得产品密钥。到目前为止没问题。然后,他/她会在我的应用程序中适当的键字段中删除密钥,然后将应用程序注册。
据我所知,人们要么推荐AES,要么推荐RSA。老实说,我在大学的另一个方向(不是密码学)和我上的一门密码课是一段时间前的事。但据我所知,AES是一种对称加密算法,这意味着我只有一个密钥用于加密和解密,对吗?那么,我如何生成数千个产品密钥,然后仍然在我的应用程序中验证它们(顺便说一句,它不需要互联网access....so,也不需要在服务器上检查)?
所以我想RSA是该走的路了?但是RSA不产生相当长的密钥(至少比上面要求的25个字符长)吗?
在另一个线程中,我看到有些产品甚至不会在产品密钥生成/验证中使用加密,而只是使用一些检查,比如“添加2.和17.字符,这应该是x”。
在这里,最快、最简单、最安全的方法是什么?:-)代码示例将是糖!
致以敬意,
塞巴斯蒂安
P.S.:Oh...and,请不要告诉我,我的钥匙在某一时刻是如何被破解的.我知道这一点,这就是为什么我不想花很多时间在这个问题上,但同时也不要让偶尔的问题变得太容易。
发布于 2009-03-14 19:19:41
对称算法是有限的,因为任何具有反汇编程序的新手都可以找到您的密钥(或生成密钥的算法)并生成一个"keygen“。
正因为如此,非对称密码学才是可行的。基本前提是这样的:
当然,这只是基本的想法。有关详细信息和源代码,请参见基于椭圆曲线密码学的乘积密钥。
发布于 2009-03-14 15:41:05
如果你只是购买一个解决方案,生活就会更简单。
http://www.kagi.com/kagisolutions/index.php
Kagi允许您收集付款,他们帮助您管理钥匙。
发布于 2009-03-14 15:54:41
一个家伙在博客上写了他如何处理注册号码的问题。他的博客条目之一是生成唯一的注册号码。
https://stackoverflow.com/questions/646086
复制相似问题