• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧
您的位置:首页 > CMS教程 >建站教程 > 总结PHP中银行卡号通用校验算法

总结PHP中银行卡号通用校验算法

作者:站长图库 字体:[增加 减小] 来源:互联网 时间:2022-04-29

站长图库向大家介绍了PHP算法,银行卡号校验,校验算法等相关知识,希望对您有所帮助

最近因公司需求写了点 API 其中需要一些银行卡号的信息 关于这个验证正则找了好多 都是些大致性的校验 比如数字拉 位数啦,后来发现一哥们写了个比较详细的介绍银行卡的生成规则 做个小总结

LUHN 算法

检验数字算法 (Luhn Check Digit Algorithm) 也叫作模数10公式是一种简单的算法,用于验证银行卡、信用卡号码的有效性的算法。对所有大型信用卡公司发行的信用卡都起作用,这些公司包括美国Express、护照、万事达卡、Discover和用餐者俱乐部等。这种算法最初是在20世纪60年代由一组数学家制定,现在Luhn检验数字算法属于大众,任何人都可以使用它

luhn 算法原理

假设现在有一个招行卡号 6225882708965808 (国内一般的主流银行卡号 一般是16位 或者19位 )


步骤一

从最后一位开始 逆向 计算 奇数 位相加之和

如上面的卡号 计算入下

8 + 8 + 6 + 8 + 7 + 8 + 5 + 2 = 52


步骤二

从最后一位开始 逆向 将 偶数 位先乘 2 如果乘积为 2位数 则减去 9 在求和 如果乘积不是 2位数 则直接相加

如上面的卡号 计算入下

0 * 2 = 05 * 2 = 10 - 9 = 19 * 2 = 18 - 9 = 90 * 2 = 02 * 2 = 48 * 2 = 16 - 9 = 72 * 2 = 46 * 2 = 12 - 9 = 3最后计算结果0 + 1 + 9 + 0 + 4 + 7 + 4 + 3 = 28


步骤三

将奇数位总和加上偶数位总和 如果结果可以被10整除则表示验证通过

52 + 28 = 8080 % 10 = 0


PHP版 luhn算法

function checkLuhn($card){    $len=strlen($card);    $all=[];    $sum_odd=0;    $sum_even=0;    for($i=0;$i<$len;$i++){        $all[]=substr($card,$len-$i-1,1);    }    //all 里的偶数key都是我们要相加的奇数位    for($k=0;$k<$len;$k++){        if($k % 2 ==0){            $sum_odd+=$all[$k];        }else{            //奇数key都是要相加的偶数和            if($all[$k] * 2 >= 10){                $sum_even+=$all[$k] * 2 - 9;            }else{                $sum_even+=$all[$k]*2;            }        }    }    $total=$sum_odd+$sum_even;    if($total % 10 == 0){        return true;    }else{        return false;    }}


有错误希望指出

当然在做这个之前需要做一些判断的,能想到自己家吧。最后这个也并非100%适用所有的银行卡号。


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 总结PHP中银行卡号通用校验算法

相关文章

  • 2022-04-29Photoshop制作网格图案效果的凹陷字
  • 2022-04-29如何解决centos6终端乱码问题
  • 2022-04-29CDR制作漂亮圣诞海报
  • 2022-04-29PS+AI打造一个中国风字体LOGO设计过程教程
  • 2022-04-29PHP怎么设置上传图片大小
  • 2022-04-29详解PHP中高精度计时器HRTime扩展
  • 2022-04-29DEDE建站内部SEO优化
  • 2022-04-29Photoshop创建梦幻迷离的彩虹背景
  • 2022-04-29dedecms织梦图集上传图片自动获取图片名做注释
  • 2022-04-29纯CSS实现心形加载动画(附源码)

文章分类

  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧

最近更新的内容

    • 解决phpMyadmin给MySQL数据表创建触发器遇到的问题
    • 如何实现由抖音、快手、知乎、短信等外部APP或浏览器跳转到微信?
    • js获取UEditor富文本编辑器中的图片地址
    • Photoshop创建梦幻迷离的彩虹背景
    • 如何解决php ueditor上传图片出现未知错误的问题
    • PHP调用今天的日期几月星期几
    • 25个你可能不知道的PS常用快捷键
    • CDR绘制活力城市/海报
    • 如何去除PS渐变时存在色阶问题
    • 手把手教你使用ThinkPHP+phpExcel导入导出Excel数据

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有