我需要生成和验证产品密钥,并一直在思考用公钥/私钥系统。
我基于我们的产品密钥
- 一个客户机名称(其可以是可变长度的串)
- 6位的序列号。
这将是很好的,如果产品密钥将是可管理的长度(16个字符或左右)
我需要他们在基地进行加密,然后distrubute解密/验证系统。 由于我们的系统是用托管代码编写(.NET),我们不希望分发的加密系统,唯一的解密。 我需要一个公共的私有密钥似乎是一个好办法做到这一点,与我保持一个密钥来加密和分发需要decrpytion /验证的其他关键。
什么是适当的机制与上述要求做到这一点?
注:这不是停止盗版行为; 这是减少新手用户安装他们不需要/未经授权的使用组件的情形产生。
.NET支持以各种方式,如公共密钥加密http://msdn.microsoft.com/en-us/library/ms867080.aspx 。 话虽如此,你会获得一些信心,有人完全访问发布的代码不会有发行自己的产品密钥的能力。 这一切都不从修补客户端接受任何为有效键停止他们。 这就是混淆的用武之地。
甚至不要尝试获得幻想与反盗版。 这不值得。 我已经破解了无数的应用程序(嘘)和.NET的有目前最简单的。 但在现实中,他们都具有足够的经验相对比较容易。 如果你不相信我的话,请isohunt一段时间。
TL;博士:这是一场败仗。 别打它。 如果你真的想赢得比赛,起诉infringments - 但即使这样会让你失去。
我做了一些非常相似。 但对我来说,这是一个简单的电话授权码。 用户会打电话数字,给他们的公司名称和他们进行操作,获得一个代码,它输入到应用程序,然后才能继续。
我所做的是连载的一块数据转换成二进制。 该数据包括散列的公司名称,操作码/到期日,并有空间,以腾出未来的需求。 然后我撒出位阵列周围,以混淆。 然后我映射二进制阵列的每个5个比特到32个字符的AUTH码字母(0-9,AZ,经电话不包括I / O / Q / S为可读性)。
这导致在一个不错的AUTH码这是16个字符,显示为4×4块(#### - #### - #### - ####)。 它可以很容易地读出通过电话,因为用户只需要听四个字符的时间,或通过短信甚至派。
至于你的问题,它的目的不是为了停留在代码饼干布莱切利公园 ,但不足以阻止做某事不按公司程序一般上班族。 而且,考虑到范围,一直是非常有效的。