缩短guid的唯一性
本文关键字:唯一性 guid 缩短 | 更新日期: 2023-09-27 18:21:27
我必须为生成的每个url附加一个唯一的代码作为查询字符串。因此,我选择的选项是缩短guid(在So上可以找到)。
public static string CreateGuid()
{
Guid guid = Guid.NewGuid();
return Convert.ToBase64String(guid.ToByteArray());
}
这会像guid一样唯一吗?因为我有几个url要生成,这个guid将保存在DB中。
如果你在url中使用这个,你应该小心。虽然字符串会更短,但它可能包含URL中非法的字符,因此您可能需要通过运行它
HttpUtility.UrlEncode()
为了安全。当然,一旦你这样做,它会再次变得更长。
编辑:
你的评论让人觉得你想要某种数学,所以这里是:
假设您一直有24个字母数字字符,大小写无关紧要。这意味着每个字符可以是0-9+a-z或36种可能性。这使得它有24^36个不同的可能字符串。请参阅此网站:
http://davidjohnstone.net/pages/hash-collision-probability
它允许您插入可能的值和运行代码所需的次数。24^36相当于2^100(我在谷歌上搜索了一下后得出了这个数字,可能不正确)。在上面链接的"哈希中的位数"字段中插入100意味着,如果你运行代码1000000次,你仍然只有3.944300×10^19的碰撞几率,或者相同的值出现两次。这很小,但如果你写的东西会被使用很多次,你可能会遇到问题。