PHP中使用Luhn算法校验信用卡及借记卡卡号
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算法校验信用卡及借记卡卡号相关推荐
- luhn算法java_Java信用卡验证– Java中的Luhn算法
luhn算法java Recently I came to know that Credit Card numbers are not random and passes Luhn Algorithm ...
- php 卡号算法,PHP实现通过Luhn算法校验信用卡卡号是否有效_PHP
本文实例讲述了PHP实现通过Luhn算法校验信用卡卡号是否有效的方法.分享给大家供大家参考.具体实现方法如下: $numbers = "49927398716 49927398717 123 ...
- c语言验证信用卡 卡号介于13到16位,使用luhn算法验证信用卡号码
信用卡号码符合特定模式.信用卡必须有13到16位数字.它必须先从: •4 Visa卡 •5主卡 •37美国运通卡 在1954年,IBM的汉斯·卢恩提出的算法验证信用卡号.该算法对于确定卡号是否正确输入 ...
- luhn算法 java_java – 使用luhn算法验证信用卡号
我对以下编程任务有疑问. 信用卡号码遵循某些模式.信用卡必须在13到16位之间.它必须从: •4张Visa卡 •5张万事达卡 •美国运通卡37张 1954年,IBM的Hans Luhn提出了一种验证信 ...
- Luhn算法验证信用卡的合法性
算法描述为: 1.从卡号最后一位数字开始,偶数位乘以2,如果乘以2的结果是是两位数,将结果减去9(可以理解为各位数相加) 2.把把有数字相加得到总和 3.看是否能被10整除,如果能,说明是合法的 ph ...
- 社会信用代码 验证php,PHP校验信用卡号实例
PHP如何实现校验信用卡卡号是否有问题?本文主要介绍了PHP实现通过Luhn算法校验信用卡卡号是否有效,通过实例分析了php实现Luhn算法及相关应用技巧.希望对大家有所帮助. 具体实现方法如下: $ ...
- 当你输入信用卡号码的时候,有没有担心输错了而造成损失呢?其实可以不必这么担心,因为并不是一个随便的信用卡号码都是合法的,它必须通过Luhn算法来验证通过。 该校验的过程:1、从卡号最后一位数字开始,逆
import java.util.Scanner;/*** 当你输入信用卡号码的时候,有没有担心输错了而造成损失呢?其实可以不必这么担心,* 因为并不是一个随便的信用卡号码都是合法的,它必须通过Luh ...
- 银行卡校验规则(Luhn算法)
当你输入信用卡号码的时候,有没有担心输错了而造成损失呢?其实可以不必这么担心,因为并不是一个随便的信用卡号码都是合法的,它必须通过Luhn算法来验证通过. 该校验的过程: 1.从卡号最后一位数字 ...
- 判断用户输入的银行卡号是否正确--基于Luhn算法的格式校验
开发中,有时候,为了打造更好的用户体验,同时减轻服务器端的压力,需要对于一些如,手机号码,银行卡号,身份证号码进行格式校验 下面是判断银行卡号输入是否正确的代码(基于Luhn算法的格式校验): iOS ...
最新文章
- 闭包的介绍、构成条件、作用及示例代码
- 【Ubuntu入门到精通系列讲解】Ubuntu 图形界面入门
- LINUX下简单制作QCOW2镜像
- loadrunner 参数化数据更新方式
- 树形dp小胖守皇宫(vijosP1144)
- 计算机不能显示可移动磁盘咋办,U盘插上电脑不显示“可移动磁盘”该怎么办...
- halcon获取图像中心点_关于Halcon的复杂图形中心点查找
- HDFS节点内数据平衡
- scala 函数定义
- 190306每日一句
- 鼎力加密狗驱动程序_怎么安装加密狗驱动程序
- 什么是java实例化?举例说明
- WebCralwer_java
- usb口拒绝访问_插u盘拒绝访问怎么办_win7u盘插电脑上显示拒绝访问的解决方法...
- VC中的_variant_t和_bstr_t
- 你也认为技术总监应懂技术细节,那就有些可悲了
- 计算机3c认证 标准,计算机3C认证怎么办理,检测标准是什么?
- 2022-2028全球与中国汽车空调冷凝器市场现状及未来发展趋势
- Python:实现counting sort计数排序算法(附完整源码)
- 图的遍历 —— 广度优先遍历