【发布时间】:2020-09-30 09:47:38
【问题描述】:
我知道有类似的问题,所以请多多包涵。
我希望生成大约 50,000 个代码供人们下订单 - 理想情况下不超过 10 个字符,并且可以包含字母和数字。它们不是折扣代码,所以我不担心人们试图猜测代码。我担心的是有人不小心输入了错误的数字(即 1 而不是 l 或 0 而不是 O),然后如果碰巧它也是一个有效的代码,系统就会失败。
由于代码不断生成,理想情况下我不想要一个表格查找验证,而是一个公式(例如,如果它包含一个 A,则数字元素应该可以被 13 整除)。
【问题讨论】:
-
一种确保所有代码足够不同的方法是生成随机代码,然后然后添加一些对应于例如CRC的字符。 en.wikipedia.org/wiki/Cyclic_redundancy_check
-
所以如果有人输入
1或0而不是I或O,您希望系统不会失败? -
抱歉,不清楚。我不想要的是生成 2 个代码,例如 ABC123 和 ABCl23,其中输入 ABC123 的用户可能会意外输入 ABCl23 并且不会收到任何警告,因为两者都是有效的。
-
确保您不会得到 2 个此类代码的最佳方法是在内部减少代码中的字母表,例如,只有“1”而不是“I”。这样,如果用户输入 ABCI23,您就知道他们的意思是 ABC123。你可以对 O 和 0 做同样的事情;甚至小写/大写。
-
你听说过 Base58 吗?你可以用它来处理原始位。
标签: algorithm uniqueidentifier