Ale*_*lex 8 language-agnostic license-key
我正在开发一个我想在某天出售的应用程序 - 早点而不是晚点!我想开发一个相当简单的序列号方案来保护它.
我一直在想这个(很少),我认为公钥加密是一个很好的起点.我可以生成一个标识许可证的字符串(如SKU + plain ole'整数序列号),哈希,加密,并将序列号+标识符编码为25位(左右)字母数字键.然后,应用程序将密钥解码为序列号和"签名",生成标识符散列,使用相应的公钥解密"签名",并将其与生成的标识符散列进行比较.
本质上,产品密钥包含两个数据:用户声称拥有的序列号以及程序可用于验证声明的各种签名.我不知道25个字母数字字符(每个编码5位,实际总计120位)是否足以满足所有这些要求.但是,它不必具有加密安全性,足以使代码不易被猜测.我可以使用短键和短哈希.
就实现而言,应用程序是用Objective-C为Mac OS X编写的,但考虑到将代码注入Cocoa应用程序是多么容易,我可能会直接编写验证代码.
我不会使用任何强大的加密技术,因为无论如何你必须在程序中解密它,使得keygens或者至少很容易破解.
我会做以下事情 - 比如一个25位数字.现在添加一些规则,例如: - 数字必须可被31整除 - 它必须以最后一个字母开头和结尾...
始终使用这些规则生成密钥.使用20条或更多规则(越多越好).部署应用程序时,请使用较少数量的规则,例如10来检查密钥是否有效.然后将这些规则反汇编并用于创建keygen.
在每次更新时,启用之前未使用的规则之一.如果正确选择了规则,您将禁用由keygens生成的大多数密钥.