我想创建一个简单的短期预订系统,我想生成确认号码
我只希望有〜500所保留,所以我不想像 collissions高的情形产生.
我有一个想法是根据日期时间戳和用户名生成一个sha1哈希,然后将其截断为前10个字符.这样的东西是否足够可靠,足以处理~500个预订?
SHA-1 哈希的任何给定位的随机性应该没有差异,所以这是可能的。另一种方法是使用 XOR 将哈希折叠到自身中,直到获得 60 位的数据,然后使用Base 64对其进行编码以获得主要是字母数字的结果。
仅当您希望能够为相同的输入数据重复生成相同的 Id 时,才需要这样做。否则,如果您生成一次随机 ID,并在此之后保留,请使用 Anders 的建议。如果发生冲突,只需生成另一个冲突即可。