zoukankan      html  css  js  c++  java
  • php银行卡校验

    前言
    银行金卡,维萨和万事达、银联品牌,如果是贷记卡或准贷记卡,一定为16位卡号。而借记卡可以16-19位不等。
    美国运通卡则不论金卡或是白金卡、普通卡,都是15位卡号。
    16-19 位卡号校验位采用 Luhm 校验方法计算

    银行卡的校验方式

    Luhm校验

    1. 将未带校验位的 15 位卡号从右依次编号 1 到 15,位于奇数位号上的数字乘以 2
    2. 将奇位乘积的个十位全部相加,再加上所有偶数位上的数字
    3. 将加法和加上校验位能被 10 整除。
     1 <?php
     2 /*
     3   16-19 位卡号校验位采用 Luhm 校验方法计算:
     4     1,将未带校验位的 15 位卡号从右依次编号 1 到 15,位于奇数位号上的数字乘以 2
     5     2,将奇位乘积的个十位全部相加,再加上所有偶数位上的数字
     6     3,将加法和加上校验位能被 10 整除。
     7 */
     8 function luhm($s) {
     9     $n = 0;
    10     for ($i = strlen($s); $i >= 1; $i--) {
    11         $index=$i-1;
    12         //偶数位
    13         if ($i % 2==0) {
    14             $n += $s{$index};
    15         } else {//奇数位
    16             $t = $s{$index} * 2;
    17             if ($t > 9) {
    18                 $t = (int)($t/10)+ $t%10;
    19             }
    20             $n += $t;
    21         }
    22     }
    23     return ($n % 10) == 0;
    24 }
    25 
    26 $r = luhm('6225881414207430');
    27 var_dump($r);
    28 ?>
  • 相关阅读:
    windows7 端口查看以及杀死进程释放端口
    字符设备驱动模块与测试代码编写。
    c++项目范例
    较复杂makefile跟lds脚本程序的编写
    S5PV210时钟,看门狗定时器
    S5PV210中断处理
    arm 异常处理结构
    arm指令系统
    arm体系结构
    s5pv210 的启动
  • 原文地址:https://www.cnblogs.com/luojianqun/p/4843897.html
Copyright © 2011-2022 走看看