我整天都在看这个.几个小时前我可能应该离开它; 在这一点上,我可能会遗漏一些明显的东西.
简短版本:有没有办法生成并将非对称加密的哈希值归结为合理数量的明确的,人类可读的字符?
长版:
我想为我的软件生成许可证密钥.我希望这些键具有合理的长度(25-36个字符)并且易于人类读取和输入(因此避免使用数字0和大写字母O等模糊字符).
最后 - 这似乎是踢球者 - 我真的很想使用非对称加密来使生成新密钥变得更加困难.
我有一般的方法:将我的信息(用户名,产品版本,盐)连接成一个字符串并从中生成一个SHA1()哈希,然后用我的私钥加密哈希.在客户端上,从相同的信息构建SHA1()哈希,然后使用公钥解密许可证,看看我是否有匹配.
由于这是一个Mac应用程序,我查看了AquaticPrime,但这会生成一个相对较大的许可证文件而不是字符串.如果必须,我可以使用它,但作为用户,我非常喜欢我可以阅读和打印的许可证密钥的便利性.
我还看了CocoaFob确实生成了一个密钥,但它太长了以至于我还是想把它作为一个文件提供.
我在OpenSSL上愚弄了一段时间,却无法想出任何合理的长度.
那么......我错过了一些明显的东西吗?有没有办法生成并将非对称加密的哈希值归结为合理数量的明确的,人类可读的字符?
我愿意购买解决方案.但我在许多不同的平台上工作,所以我想要一些便携的东西.到目前为止,我所看到的一切都是特定于平台的.
很多,非常感谢您的解决方案!
PS - 是的,我知道它仍然会被破解.我想提出一些合理的东西,作为一个用户,我仍然会发现友好.
很不幸的是,不行。如果将其缩短,则会丢失信息并且无法重新创建原始哈希。
不过,您可以尝试以下几件事: