C++ 信用卡验证器

2024 年 8 月 28 日 | 阅读 6 分钟

信用卡验证器应用程序是使用 C++ 创建的。它使用 Luhn 算法来验证信用卡号并识别信用卡类型。C++ 编程语言被用来创建一个信用卡验证器应用程序,以验证用户信用卡号的有效性。

它使用 Luhn 算法来确定一个信用卡号是否合法。Luhn 算法是一个简单的校验和公式,可用于验证多种身份识别号码,包括信用卡号、IMEI 号码等,尽管它最常用于验证信用卡号。

概述

输入信用卡号后,系统会验证其有效性,并确定它是 Visa、MasterCard、American Express 还是其他类型的卡。它通过执行一些基本操作和验证来确认卡的真实性和信用卡类型。系统会生成用户输入的信用卡号,并附带一条消息,指示该卡是有效还是无效。如果输入的信用卡号有效,还会打印出信用卡类型。

信用卡号存在一些规律。

信用卡号必须包含13到16位数字。它必须以下列数字开头:

  • Visa 卡为 4
  • MasterCard 卡为 5
  • American Express 卡为 37
  • Discover 卡为 6

Luhn 算法可以用来解决这个问题。

Luhn 算法

Luhn 算法,通常被称为模10或 mod 10 算法,是一种简单的校验和技术,用于验证大量的身份识别号码,包括加拿大社会保险号码、IMEI 号码和信用卡号。LUHN 公式是由一组数学家在20世纪60年代末发明的。信用卡公司随后迅速采用了它。任何人都可以使用该算法,因为它在公共领域是免费的。这种技术是区分合法号码和输入错误或其他错误号码的常用方法,适用于大多数信用卡和许多政府身份识别号码。它的创建是为了防止无意的错误,而不是蓄意的攻击。

Luhn 校验,也称为 Mod 10 校验,可以解释如下(参考卡号 4388576018402626):

步骤 1:从右到左,将每隔一位的数字加倍。当一个数字加倍后得到两位数时,将这两个数字相加得到一个一位数(例如,12:1+2, 18:1+8)。

步骤 2:现在,将步骤 1 中所有的个位数相加。

4 + 4 + 8 + 2 + 3 + 1 + 7 + 8 = 37

步骤 3:从右到左,将卡号中所有奇数位置的数字相加。

6 + 6 + 0 + 8 + 0 + 7 + 8 + 3 = 38

步骤 4:将步骤 2 和步骤 3 的结果相加。37 + 38 = 75

步骤 5:如果步骤 4 的答案可以被 10 整除,则卡号是合法的;否则,它是无效的。

程序分解

我们正在为 C++ 中的信用卡验证器包含所有必需的文件。

上面的函数 getDigit 将返回两位数字的和,如果它是一个个位数,则返回该数字本身。

上面提到的函数将返回 d 中的数字位数。

上面提到的函数 getPrefix 将从数字中返回前 k 个数字。如果数字中的位数小于 k,则将返回该数字。

函数 prefixMatched 如果数字 d 是 number 的前缀,则返回 true。// 从步骤2获取结果

上述函数将返回从步骤2获得的结果。

上面的函数 sumOfOddPlace 将返回 number 中奇数位数字的总和。

上面提到的函数 isValid 是布尔类型,如果用户输入的卡号有效,则返回 true。

驱动代码大概是这样的,包含一个长整型数字,这将是信用卡号。然后使用三元运算符,我们检查 isValid 函数是否返回 true,如果是,则打印有效,否则打印无效。

C++ 信用卡验证器程序

输出

5116021318510645L is valid.
............................
Process executed in 1.22 seconds
Press any key to continue.

时间复杂度为 O(n),其中 n 是所提供字符串的长度。

辅助空间:O(1);它是一个常量,因为不需要额外的空间。


下一主题C++ 酒店管理