Javascript Node.js字符串中的10位哈希代码

Javascript Node.js字符串中的10位哈希代码,javascript,node.js,cryptography,Javascript,Node.js,Cryptography,我有以下字符串: "184500000712_1_new_store1", "184500000712_4_new_store1", "184500000712_12_new_store1", "195600000819_1_new_store2", ... 我试图将每个字符串转换为唯一的10位代码,如下所示: 184500000712_1_new_store1 => K14K4O9WVQ 184500000712_4_new_store1 => E93N7L2PXC 184500

我有以下字符串:

"184500000712_1_new_store1",
"184500000712_4_new_store1",
"184500000712_12_new_store1",
"195600000819_1_new_store2",
...
我试图将每个字符串转换为唯一的10位代码,如下所示:

184500000712_1_new_store1 => K14K4O9WVQ
184500000712_4_new_store1 => E93N7L2PXC
184500000712_12_new_store1 => A89F5I6JIO
195600000819_1_new_store2 => J00B1I5KFU
此外,字符串到代码的输出必须始终一致。Fe,utf-8 base64字符串的编码
184500000712\u 1\u new\u store1
将始终输出代码
MTg0NTAwMDAwNzEyXzFfbmV3X3N0b3JlMQ=


谢谢

如果它不需要是一个安全的散列(考虑到它只有10个字符,它可能不需要),您可以检查这个答案以获得一个快速散列生成器:


将字符串截断到所需的长度,就可以了。根据创建的字符串数量,可能需要注意冲突。

如果可以将每个字符串压缩为7.5字节(是的,我的意思是60位),则可以使用伪随机排列来获得唯一的结果值。如果你不能压缩它,那么唯一的方法就是管理一个已知输入和随机生成的输出的(可能是巨大的)映射。很好!我没有想到压缩。我有一些字符串的长度是示例字符串的10倍。压缩是否仍能保持唯一性正如我所说,您需要将输入字符串“压缩”到60位。只有当它们实际上是低熵的,或者你可以自己找到压缩它们的方法,因为你可以从中看到某种规则,这才是可能的。如果你不能,那你就不走运了。然后,最好使用哈希函数,将输出截断为60位,使用base64编码并删除填充字符。加密哈希函数不能保证唯一性,但它使冲突不可能发生。