我在 JSON 文件中有一个 array
的 object
。 object
没有唯一的 id
,所以我需要创建一个唯一的 id
或一个唯一的 string
.
[
{
"name": "Jack Potts",
"age": "56"
}, {
"name": "Rusty Carr",
"age": "31"
}
]
我知道我可以使用 MD5 ,传入 object
,但我打算在 URL 中使用 string
,所以我希望它更短。
而不是/people/3449c9e5e332f1dbb81505cd739fbf3f
,我更喜欢/people/1dbb81505
。
它仍然需要是 object
的表示,因为我要再次从 URL 中查找这个人。
有什么东西可以生成比 MD5 string
更短的 string
..?
我猜 MD5 是我最好/唯一的选择,但我想我会问。
更新
我可能没有我应该的那么清楚。我不仅需要生成唯一的 id
。我不会用我生成的任何内容更新 JSON 文件。
我需要一种方法来获取有问题的 object
,为它创建一个 URL,然后在访问该 URL 时使用该 URL 返回到该 object
数组
。
据我所知,如果您将相同的 string
传递给 MD5一遍又一遍,它将始终返回相同的 MD5 string
,因为它是一个表示。出于同样的原因,人们在将密码存储在数据库中时不会使用它吗?
也许 MD5 没问题,我只是认为可能有一些东西可以生成更短的 string
,它是数据的表示。这是我的问题。
更新 2
数组
中的人可能会改变。人员可能会被添加和删除,因此使用 array
索引将不起作用。
最佳答案
如果您只想要比 MD5 更短的输出,但对唯一性感到满意,只需 chop 到您需要的长度,每个位与任何其他位一样随机,即您选择的位的任何子集都一样好与任何其他子集一样。
但请注意,如果两个名称相同,您将获得相同的哈希值。
由于您必须意识到哈希越短,冲突的变化就越大,因此您在哈希长度与唯一性之间进行权衡,这并不坏,只要确保您有足够的唯一性来满足您的需求即可。
关于javascript - 使用 JavaScript 的 md5 的较短版本..?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42530980/