【发布时间】:2012-06-18 16:23:51
【问题描述】:
我想生成 1M 随机(出现)唯一的字母数字键并将它们存储在数据库中。每个键的长度为 8 个字符,并且仅使用子集“abcdefghijk n pqrstuvxyz 和 0-9”。
字母 l、m、o 和 w 被丢弃。由于打印空间有限,省略了“m 和 w”,因为每个键都将在非常小的空间内打印在产品上。删除 m 和 w 可以将字母大小增加 2pt,从而提高可读性。 l 和 o 被删除,因为它们在当前打印尺寸下很容易与 1、i 和 0 混淆。我们做了一些测试,字符 1、i 和 0 总是被正确读取,l 和 o 有很多错误。省略大写字母的原因与 'm 和 w" 相同。
那么为什么不是序列呢?几个原因: 密钥可以在之后注册,我们不希望任何人猜测序列中的下一个密钥并注册其他人的密钥。外观:我们不需要客户和竞争对手就知道我们只运送了几千把钥匙。
是否有一种实用的方法来生成密钥,确保每个密钥的唯一性并将它们存储在数据库中?谢谢!
【问题讨论】:
-
Gartman 写道:“外观:我们不需要客户和竞争对手就知道我们只运送了几千把钥匙。”根据我的经验,他们会弄清楚。
-
诀窍是获得均匀分布的副本。
-
@starbolin - 你当然可以只生成唯一的密钥,而没有任何重复。
-
@Ramhound 是的,当时我还没有做数学计算,并认为他想重用密钥。我没有意识到他产生的超龄量有多大。其他人已经讨论了这个话题,所以我要退出了。