有没有办法将字符串压缩/编码为指定的长度(8/10字符)。
我有一个密钥和一个16位数字值的组合,我想创建一个唯一的id与这两者的组合。哪个长度应该在8-12之间,如果组合相同则不应该改变。
请建议一种方式。
答案 0 :(得分:0)
如果它是16位十进制数字且你的字符串可以包含任何字符,那么肯定。如果您想要输出10个字符,那么您需要40个不同的字符。 40 10 > 10 16 。或者对于九个角色,你需要60个不同的角色。 60 9 > 10 16 。例如。大写字母,小写字母和数字的一些子集(62选择40或60)。然后,它只是基本转换的问题。从基数10转换为基数40或60,然后返回。
许多语言已经有了Base-64编码例程,这将使您获得9个字符。
八是一个问题,因为你需要100个字符(100 8 == 10 16 ),并且只有95个可打印的ASCII字符。
答案 1 :(得分:0)
您可以使用安全散列函数(如sha512),并将生成的十六进制字符串截断为所需的长度。
如果你想要更多的熵,你可以在截断之前对其进行base64编码。