gpt4 book ai didi

algorithm - 如何生成验证码/号码?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:16:18 26 4
gpt4 key购买 nike

我正在开发一个应用程序,用户必须使用手机键盘调用电话并输入验证号码。

我希望能够检测他们输入的数字是否正确。电话系统无法访问有效号码列表,但它会根据算法(如信用卡号码)验证号码。

以下是一些要求:

  • 一定很难输入有效的随机码
  • 如果我打错了(数字换位,错误数字),肯定很难得到一个有效的代码
  • 我必须有合理数量的可能组合(比如 1M)
  • 代码必须尽可能短,以避免用户出错

鉴于这些要求,您将如何生成这样的数字?

编辑:

@Haaked:代码必须是数字,因为用户是用手机输入的。

@matt b:第一步,代码显示在网页上,第二步是调用并输入代码。我不知道用户的电话号码。

跟进:我发现了几种算法来检查数字的有效性(参见这个有趣的 Google 代码项目:checkDigits)。

最佳答案

经过一些研究,我想我会使用 ISO 7064 Mod 97,10 公式。它看起来非常可靠,因为它用于验证 IBAN(国际银行帐号)。

公式很简单:

  1. 取一个数字:123456
  2. 应用以下公式获得 2 位校验和:mod(98 - mod(number * 100, 97), 97) => 76
  3. 连接数字和校验和得到代码=> 12345676
  4. 要验证代码,请验证 mod(code, 97) == 1

测试:

  • mod(12345676, 97) = 1 => 好
  • mod(21345676, 97) = 50 => 不好!
  • mod(12345678, 97) = 10 => 不好!

显然,该算法捕获了大部分错误。

另一个有趣的选项是 Verhoeff algorithm 。它只有一位验证码,实现起来比较困难(相对于上面的简单公式)。

关于algorithm - 如何生成验证码/号码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46231/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com