我一整天都在看这个。我可能几个小时前就该离开它了;我可能在这一点上遗漏了一些显而易见的东西。
短版本:是否有一种方法可以生成不对称加密的散列,并将其归结为合理数量的明确的人类可读的字符?
长篇版本:
我想为我的软件生成许可证密钥。我希望这些键有一个合理的长度(25-36个字符),并且容易被人阅读和输入(因此避免像数字0和大写字母O这样的模糊字符)。
最后--这似乎是一种刺激--我真的很想用非对称加密来增加生成新密钥的难度。
我有一个通用的方法:将我的信息(用户名、产品版本、salt)连接到一个字符串中,然后生成一个SHA1()哈希,然后用我的私钥加密哈希。在客户机上,从相同的信息构建SHA1()哈希,然后用公钥解密许可证,并查看是否匹配。
因为这是一个Mac应用程序,所以我看了AquaticPrime,但是这会生成一个相对较大的许可文件,而不是一个字符串。如果必须的话,我可以使用它,但是作为一个用户,我真的很喜欢我可以读取和打印的许可密钥的方便性。
我还查看了CocoaFob,它确实生成了一个密钥,但是它太长了,所以我无论如何都想把它作为一个文件来传递。
我和OpenSSL混在一起了一段时间,但不能想出任何合理的长度。
So...am,我错过了一些显而易见的东西吗?是否有一种方法可以生成不对称加密的散列,并将其归结为合理数量的明确的、人类可读的字符?
我愿意买个解决方案。但是我在许多不同的平台上工作,所以我想要一些便携的东西。到目前为止,我所看到的一切都是特定于平台的。
非常,非常感谢您的解决方案!
是的,我知道它还会被破解的。我试着想出一些合理的东西,作为一个用户,我仍然会找到友好的。
发布于 2011-01-04 23:32:30
很遗憾,我不会。如果您缩短了它,您将丢失信息,并将无法重新创建原始哈希。
但是,您可以尝试以下几点:
发布于 2010-06-17 15:03:22
将每个SHA1字符作为十六进制,可能删除任何不必要的格式,(破折号或括号),使用一些数组映射将0-9A-F转换为某种随机顺序的as,使用它作为您输入的“人工”文本。MD5将为您提供32个字符,或者为SHA1再提供一些字符。将字符解映射回SHA1 1/MD5字符串/字节,然后从那里继续。
发布于 2016-06-03 12:43:42
目前创建短许可证密钥的最佳基于签名的方法似乎是Boneh-Lynn-Shacham签名方案,尽管它是最近才出现的(并不是很多评论),并且没有在常见的密码工具中实现。
下面是一种使用通用openssl和bash的方法:
openssl ecparam -genkey -name sect113r1 -out private.key # generate the private key (store it on your server)
openssl ec hist-in private.key -pubout -out public.key # generate a public key (store it in the client software)
# generate a random one time activation userID or a hardware-based one here (CLIENT SIDE)
user_id="unique_on_the_fly_generated_user_ID" # send the user ID to the server for license generation
signature=""
return_value=0
while [[ $return_value == 0 ]]
do
signature=$(echo "$user_id" | openssl dgst -sign private.key | base64 > signature.txt) # generate a user licence
echo "$signature" | egrep -q 'O|l|/|\+|=' # check for ambiguous chars
return_value=$?
done
echo "$signature" | base64 -d > signature.txt # send the signature/license to the client
openssl dgst -verify public.key -signature signature.txt # verify signature (CLIENT SIDE)请注意,您仍然得到一个48个字符长的签名/许可证密钥(加上一个通用的"M“头字符,您可以避免发送)。据我所知,目前您无法用openssl生成更短的签名。
https://stackoverflow.com/questions/2726105
复制相似问题