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

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

作者:站长图库 字体:[增加 减小] 来源:互联网

站长图库向大家介绍了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中银行卡号通用校验算法

相关文章

  • Photoshop制作华丽的金色礼品字
  • DedeCMS获取栏目图片如果没有栏目图片调用顶级图片
  • Thinkphp5.1趣味实现学生扫码选座功能
  • 详解thinkphp ajaxfileupload异步上传图片
  • 重新对百度支付进行编写封装(百度智能小程序支付)
  • VUE中怎么导出excel文件?
  • 怎么在swarm集群里通过service部署wordpress
  • PHP如何根据ip查询详细地址
  • jQuery对象怎么转为html dom对象
  • 三种ThinkPHP6中获取参数的方法

文章分类

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

最近更新的内容

    • 手把手教你使用Vue3实现图片散落效果
    • Photoshop巧用滤镜打造璀璨星球夜空图
    • 百度蜘蛛是怎样来判断文章质量的?
    • ThinkPHP6通过Ucenter实现注册登录的示例代码
    • Illustrator实例教程:抛光浮雕样式制作立体字
    • Wordpress如何调用个人信息
    • PhotoShop图层样式打造复古大气皇族金字效果教程
    • 一起聊聊PHP中return语句的作用和echo的区别(详解及实例)
    • PHP中对于会话控制里的session如何使用?
    • html+css如何实现自定义图片上传按钮

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

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