我想加密许可系统的一些信息,我希望用户可以输入结果。
更新:此操作必须是可逆的(可解密) 例如。, 加密(ComputerID + ProductID) - > (任何可以键入的标准ASCII字符。理想情况下甚至可能只是A-Z)。
到目前为止,我所做的是将加密文本转换为HEX(因此它是0-F中的任何字符),但是这会使字符数增加一倍。
我正在使用VB6。
我想我会对每对(输入$(x)和键$(x))进行一些操作,然后做一个MOD以使其保持在ascii值的范围内(可能是0-9- AZ)
有关良好算法的任何建议吗?
答案 0 :(得分:5)
查看Base64“加密。”
Base 64将一个数字转换为64个不同的ASCII字符,十六进制,只有16个不同的ASCII字符......使Base64更紧凑,你正在寻找。
编辑: 可在此处获取在VB6中执行此操作的代码:http://www.nonhostile.com/howto-encode-decode-base64-vb6.asp
根据下面的模糊棒棒糖,Base32看起来是更好的选择。如果您能找到 的示例,则可获得奖励。
编辑:我发现example of Base32 for VB6虽然我还没试过。 - 粘土答案 1 :(得分:2)
以HEX或Base32或Base64
编码加密字节答案 2 :(得分:0)
您希望这是可逆的 - 从加密文本中恢复ID吗?如果是这样,那么你如何组合键和输入字符串就很重要了。
通常你会对每个字节对进行异或(使用字节数组来避免Unicode问题),如果它比输入短,则在密钥字符串上循环。然后,您可以使用Base N编码(32,64等)生成许可证字符串。
这两个操作都是可逆的:您可以从Base N字符串恢复XORed字符串,然后再次使用密钥进行XOR以获取原始ID。
如果您不关心撤消操作,那么密钥和ID的任何卷积都可以。 XOR是最简单的。