我一直在看这一整天。几个小时前我应该已经走开了;在这一点上,我可能会漏掉一些明显的东西。使用非对称加密生成合理长度的许可证密钥?
简短版本:有没有一种方法可以生成一个非对称加密散列并将其归结为合理数量的明确的,人类可读的字符?
龙版本:
我要生成的许可证密钥我的软件。我希望这些键具有合理的长度(25-36个字符),并且可以方便地读取和输入(避免模糊字符,例如数字0和大写字母O)。
终于 - 这似乎是踢球 - 我真的很喜欢使用非对称加密,使其更难以生成新的密钥。
我已经有了一般的方法:将我的信息(用户名,产品版本,盐)连接成一个字符串,并从中产生一个SHA1()哈希,然后用我的私钥加密哈希。在客户端上,根据相同的信息构建SHA1()哈希,然后用公钥解密许可证,看看是否有匹配。
由于这是一款Mac应用程序,因此我查看了AquaticPrime,但生成的是相对较大的许可证文件而非字符串。如果必须的话,我可以使用它,但作为用户,我真的很喜欢我可以读取和打印的许可证密钥的便利性。
我也看了一下CocoaFob,它确实生成了一个键,但是我想要把它作为一个文件传递,这是很长的。
我fooled around with OpenSSL一段时间,但不能拿出任何合理的长度。
所以......我错过了一些明显的东西吗?有没有一种方法可以生成并将不对称加密的散列生成并合理化为合理数量的明确的,人类可读的字符?
我愿意购买解决方案。但是我在很多不同的平台上工作,所以我想要一些可移植的东西。到目前为止,我看过的所有内容都是平台特定的。
很多非常感谢您的解决方案!
PS - 是的,我知道它仍然会被破解。我试图想出一些合理的东西,作为一个用户,我仍然会觉得友好。
答案似乎是:不,你不能。如果有人能证明我错了,我会留下这个问题,但从我能告诉它只需要很多字节来加密散列,就是这样。我最终使用CocoaFob,到目前为止没有人抱怨(荒谬)很长的许可证密钥。 – starkos 2010-06-18 22:47:52
作为一个兴趣点:我的应用程序,不明原因,在不到24小时内被破解。但它要求可执行文件在他们的keygen工作之前进行修补(他们用自己的公钥替换掉我的公钥)。我可以轻松地打破每个新版本的补丁(只需将键盘洗牌),以便我可以忍受它。 – starkos 2010-06-18 22:50:07
Base58编码消除了不明确的字符。 – zaph 2016-06-03 13:27:53