1
问题:我必须生成一个n -digit帐号。为了在对照任何持续性检查之前帮助尽早验证号码,我想验证号码是我们的号码之一。 Luhn Algorithm将验证该号码是否与校验和匹配,但不是该号码的颁发者是有效的。从PHP中生成一个可验证的非序列整数PHP
的如何将(理想地)发生此实施例:
- 生成顺序帐号。
- 交出连续数占数发生器:
$accountNumber = 1; // doesn't matter, could be random
$generator = new Generator(getenv('ACCOUNT_SALT'));
echo $generator->generate($code); // output something like 83463476
后来:
$badCode = 83463475; // can't be right
$generator = new Generator(getenv('ACCOUNT_SALT'));
$generator->validate($badCode); // will return false because the number cannot be reached mathematically based on the salt.
虽然这是一场野蛮的力量无人防守,它确实给早期验证,并应给予我们非连续的账号。问题是:有没有人知道这样做的算法,如果是的话,他们能举一个例子吗?
谢谢Jay的编辑。 – shrikeh
有趣的问题,但我很可能是最重要的一点困惑 - 你是什么意思的“验证数字*发行人”? –
以一种(非常)基本和不受欢迎的方式,想象一个组织有一天说“我们所有的八位数帐号都是三位数的倍数”。任何通过不能被3整除的表单输入的帐号 - 无需查询数据库 - 显然无效。 – shrikeh