创建一个独特的字母数字10个字符的字符串

sat*_*ace 8 random unique

我想创建一个简单的短期预订系统,我想生成确认号码

  • 独特
  • 随机找
  • 字母
  • short-ish,至少比sha1返回的32个字符长的字符串短

我只希望有〜500所保留,所以我不想像 collissions高的情形产生.

我有一个想法是根据日期时间戳和用户名生成一个sha1哈希,然后将其截断为前10个字符.这样的东西是否足够可靠,足以处理~500个预订?

Ecl*_*pse 4

SHA-1 哈希的任何给定位的随机性应该没有差异,所以这是可能的。另一种方法是使用 XOR 将哈希折叠到自身中,直到获得 60 位的数据,然后使用Base 64对其进行编码以获得主要是字母数字的结果。

仅当您希望能够为相同的输入数据重复生成相同的 Id 时,才需要这样做。否则,如果您生成一次随机 ID,并在此之后保留,请使用 Anders 的建议。如果发生冲突,只需生成另一个冲突即可。

  • 我可以建议使用 32 基数吗?如果有人需要转录这个序列,Crockford 的 Base32 是一个更好的选择 http://crockford.com/wrmg/base32.html (2认同)