Luhn算法会通过校验码对一串数字进行验证,校验码通常会被加到这串数字的末尾处,从而得到一个完整的身份识别码。

我们以数字“7992739871”为例,计算其校验位:

  • 从校验位开始,从右往左,偶数位乘2(例如,7*2=14),然后将两位数字的个位与十位相加(例如,10:1+0=1,14:1+4=5);
  • 把得到的数字加在一起(本例中得到67);
  • 将数字的和取模10(本例中得到7),再用10去减(本例中得到3),得到校验位。


另一种方法是:

  • 从校验位开始,从右往左,偶数位乘2,然后将两位数字的个位与十位相加;
  • 计算所有数字的和(67);
  • 乘以9(603);
  • 取其个位数字(3),得到校验位。
  • 使用PHP实现该算法(第一种):
/*** PHP实现Luhn算法(方式一)* @author:http://nonfu.me*/
$no = '7432810010473523';
$arr_no = str_split($no);
$last_n = $arr_no[count($arr_no)-1];
krsort($arr_no);
$i = 1;
$total = 0;
foreach ($arr_no as $n){if($i%2==0){$ix = $n*2;if($ix>=10){$nx = 1 + ($ix % 10);$total += $nx;}else{$total += $ix;}}else{$total += $n;}$i++;
}
$total -= $last_n;
$x = 10 - ($total % 10);
if($x == $last_n){echo '符合Luhn算法';
}

另一种算法的PHP实现:

/*** PHP实现Luhn算法(方式二)* @author:http://nonfu.me*/
$no = '6228480402564890018';
$arr_no = str_split($no);
$last_n = $arr_no[count($arr_no)-1];
krsort($arr_no);
$i = 1;
$total = 0;
foreach ($arr_no as $n){if($i%2==0){$ix = $n*2;if($ix>=10){$nx = 1 + ($ix % 10);$total += $nx;}else{$total += $ix;}}else{$total += $n;}$i++;
}
$total -= $last_n;
$total *= 9;
if($last_n == ($total%10)){echo '符合Luhn算法';
}

经检测,能够校验16位或19位银行卡卡号。

PHP中使用Luhn算法校验信用卡及借记卡卡号相关推荐

  1. luhn算法java_Java信用卡验证– Java中的Luhn算法

    luhn算法java Recently I came to know that Credit Card numbers are not random and passes Luhn Algorithm ...

  2. php 卡号算法,PHP实现通过Luhn算法校验信用卡卡号是否有效_PHP

    本文实例讲述了PHP实现通过Luhn算法校验信用卡卡号是否有效的方法.分享给大家供大家参考.具体实现方法如下: $numbers = "49927398716 49927398717 123 ...

  3. c语言验证信用卡 卡号介于13到16位,使用luhn算法验证信用卡号码

    信用卡号码符合特定模式.信用卡必须有13到16位数字.它必须先从: •4 Visa卡 •5主卡 •37美国运通卡 在1954年,IBM的汉斯·卢恩提出的算法验证信用卡号.该算法对于确定卡号是否正确输入 ...

  4. luhn算法 java_java – 使用luhn算法验证信用卡号

    我对以下编程任务有疑问. 信用卡号码遵循某些模式.信用卡必须在13到16位之间.它必须从: •4张Visa卡 •5张万事达卡 •美国运通卡37张 1954年,IBM的Hans Luhn提出了一种验证信 ...

  5. Luhn算法验证信用卡的合法性

    算法描述为: 1.从卡号最后一位数字开始,偶数位乘以2,如果乘以2的结果是是两位数,将结果减去9(可以理解为各位数相加) 2.把把有数字相加得到总和 3.看是否能被10整除,如果能,说明是合法的 ph ...

  6. 社会信用代码 验证php,PHP校验信用卡号实例

    PHP如何实现校验信用卡卡号是否有问题?本文主要介绍了PHP实现通过Luhn算法校验信用卡卡号是否有效,通过实例分析了php实现Luhn算法及相关应用技巧.希望对大家有所帮助. 具体实现方法如下: $ ...

  7. 当你输入信用卡号码的时候,有没有担心输错了而造成损失呢?其实可以不必这么担心,因为并不是一个随便的信用卡号码都是合法的,它必须通过Luhn算法来验证通过。 该校验的过程:1、从卡号最后一位数字开始,逆

    import java.util.Scanner;/*** 当你输入信用卡号码的时候,有没有担心输错了而造成损失呢?其实可以不必这么担心,* 因为并不是一个随便的信用卡号码都是合法的,它必须通过Luh ...

  8. 银行卡校验规则(Luhn算法)

       当你输入信用卡号码的时候,有没有担心输错了而造成损失呢?其实可以不必这么担心,因为并不是一个随便的信用卡号码都是合法的,它必须通过Luhn算法来验证通过. 该校验的过程: 1.从卡号最后一位数字 ...

  9. 判断用户输入的银行卡号是否正确--基于Luhn算法的格式校验

    开发中,有时候,为了打造更好的用户体验,同时减轻服务器端的压力,需要对于一些如,手机号码,银行卡号,身份证号码进行格式校验 下面是判断银行卡号输入是否正确的代码(基于Luhn算法的格式校验): iOS ...

最新文章

  1. 闭包的介绍、构成条件、作用及示例代码
  2. 【Ubuntu入门到精通系列讲解】Ubuntu 图形界面入门
  3. LINUX下简单制作QCOW2镜像
  4. loadrunner 参数化数据更新方式
  5. 树形dp小胖守皇宫(vijosP1144)
  6. 计算机不能显示可移动磁盘咋办,U盘插上电脑不显示“可移动磁盘”该怎么办...
  7. halcon获取图像中心点_关于Halcon的复杂图形中心点查找
  8. HDFS节点内数据平衡
  9. scala 函数定义
  10. 190306每日一句
  11. 鼎力加密狗驱动程序_怎么安装加密狗驱动程序
  12. 什么是java实例化?举例说明
  13. WebCralwer_java
  14. usb口拒绝访问_插u盘拒绝访问怎么办_win7u盘插电脑上显示拒绝访问的解决方法...
  15. VC中的_variant_t和_bstr_t
  16. 你也认为技术总监应懂技术细节,那就有些可悲了
  17. 计算机3c认证 标准,计算机3C认证怎么办理,检测标准是什么?
  18. 2022-2028全球与中国汽车空调冷凝器市场现状及未来发展趋势
  19. Python:实现counting sort计数排序算法(附完整源码)
  20. 图的遍历 —— 广度优先遍历

热门文章

  1. iyyy、yyyy、ww、iw之间的区别及注意的地方
  2. apt-get和aptitude
  3. 基于智能家居控制器的智能家居智能化控制:基于强化学习技术
  4. 如何编写邮件主题和标题
  5. 青创教育php_青创独家|2019年度教育类创业公司传播影响力排行TOP20
  6. (E3)模型气象参数配置
  7. 有什么性价比高的运动蓝牙耳机值得推荐?双十一运动装备必选!
  8. 中台的本质及中台建设的4点思考
  9. 作为“混合云第一股” 青云科技上市背后的逻辑
  10. 智能仓储:探索如何使用机器人技术来提高仓库效率和准确性