pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

基于Luhn算法的銀行卡校驗規則

這篇文章主要為大家介紹了基于Luhn算法的銀行卡校驗規則,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

案例:

當你輸入信用卡號碼的時候,有沒有擔心輸錯了而造成損失呢?其實可以不必這么擔心,因為并不是一個隨便的信用卡號碼都是合法的,它必須通過Luhn算法來驗證通過。

該校驗的過程:

1、從卡號最后一位數字開始,逆向將奇數位(1、3、5等等)相加。

2、從卡號最后一位數字開始,逆向將偶數位數字,先乘以2(如果乘積為兩位數,則將其減去9),再求和。

3、將奇數位總和加上偶數位總和,結果應該可以被10整除。

例如,卡號是:5432123456788881

則奇數、偶數位(用紅色標出)分布:5432123456788881

奇數位和=35

偶數位乘以2(有些要減去9)的結果:16 2 6 1 5 7 7,求和=35。

最后35+35=70可以被10整除,認定校驗通過。

import java.util.Scanner;
//信用卡號校驗算法
public class Luhn {
 public static void main(String[] args) {
  System.out.println("Please input your credit card number:");
  Scanner input = new Scanner(System.in);
  int sumOdd = 0;
  int sumEven = 0;
  String number = input.next();
  int length = number.length();
  int[] wei = new int[length];
  for (int i = 0; i < number.length(); i++) {
   wei[i] = Integer.parseInt(number.substring(length - i - 1, length
     - i));// 從最末一位開始提取,每一位上的數值
   System.out.println("第" + i + "位數字是:" + wei[i]);
  }
  for (int i = 0; i < length / 2; i++) {
   sumOdd += wei[2 * i];
   if ((wei[2 * i + 1] * 2) > 9)
    wei[2 * i + 1] = wei[2 * i + 1] * 2 - 9;
   else
    wei[2 * i + 1] *= 2;
   sumEven += wei[2 * i + 1];
  }
  System.out.println("奇數位的和是:" + sumOdd);
  System.out.println("偶數位的和是:" + sumEven);
  if ((sumOdd + sumEven) % 10 == 0)
   System.out.println("Recept.");
  else
   System.out.println("Can not recept.");
 }
}

運行結果:

Please input your credit card number:
5432123456788881
第0位數字是:1
第1位數字是:8
第2位數字是:8
第3位數字是:8
第4位數字是:8
第5位數字是:7
第6位數字是:6
第7位數字是:5
第8位數字是:4
第9位數字是:3
第10位數字是:2
第11位數字是:1
第12位數字是:2
第13位數字是:3
第14位數字是:4
第15位數字是:5
奇數位的和是:35
偶數位的和是:35
Recept.

銀行卡校驗規則(Luhn算法)

Luhn檢驗數字算法(Luhn Check Digit Algorithm),也叫做模數10公式,是一種簡單的算法,用于驗證銀行卡、信用卡號碼的有效性的算法。對所有大型信用卡公司發行的信用卡都起作用,這些公司包括美國Express、護照、萬事達卡、Discover和用餐者俱樂部等。這種算法最初是在20世紀60年代由一組數學家制定,現在Luhn檢驗數字算法屬于大眾,任何人都可以使用它。

算法:將每個奇數加倍和使它變為單個的數字,如果必要的話通過減去9和在每個偶數上加上這些值。如果此卡要有效,那么,結果必須是10的倍數。

比如上圖的卡號為3759 8765 4321 001 (15位),從最高位開始所有的奇數位相加,偶數為乘以2相加(偶數乘以2后如果大于10則兩位數相加),把這些奇數和偶數都加在一起得到57.

(57+3)%10 ==0 如果此卡滿足被10整除,則有效位必定為3。

針對目前提現成功(clear_success)的記錄里面,統計卡號的位數和數量關系如下:

卡號位數數量

<13        3038+

14           538

15           476

16           10884

17           68

18           4395

19          38070

>20        504+

說明:

位數少于14的卡號基本是外資銀行,或小銀行。

位數少于14的卡號基本是外資銀行,或小銀行。

***496748***        **     HSBC                               HSBCHKHHHKH  

***430259***        **     HSBC                               HSBCHKHHHKH  

***51878018***     **    Bank of East Asia Limited      BEASHKHHXXX   

位數多于23的卡號大多是卡號包含字母或空格。

62270014 **** 0045 ***      CHINA CONSTRUCTION BANK **                

601382700 **** 9077 **      BANK OF CHINA FOSHAN BRANCH **

如果是國內的主流銀行(中、農、工、建、招、交等)基本都是基于16位或者19位的卡號。

來看看提現成功(clear_success)里面的卡有多少滿足Luhn規則

針對16位美元個人用戶  準確率:99.84%

正確的卡號數量:3105    不正確的卡號數量 :14

卡號45806509689007** is NOT valid

卡號48620375555016** is NOT valid

卡號54202100231152** is NOT valid

卡號58890201075786** is NOT valid

卡號62106200000456** is NOT valid

卡號62129986037235** is NOT valid

卡號62252017026526** is NOT valid

針對19位美元個人用戶   準確率:99.96%

正確的卡號數量:10574       不正確的卡號數量 :13  其中3筆發生退票

卡號60138214000567721** is NOT valid

卡號60138217000662109** is NOT valid

卡號60138220005824282** is NOT valid

卡號60138220006014219** is NOT valid

卡號60220001386050410** is NOT valid

卡號62161132000004484** is NOT valid

卡號62220212082154900** is NOT valid

卡號62220836020035821** is NOT valid

卡號63214140980000000** is NOT valid

以上都是提現成功的卡號,可以看到基本都嚴格滿足Luhn算法。

卡號位數數量

15      1

16      149

17      4

18      64

19      502

20      3

正確的卡號數量:622

不正確的卡號數量:29 + 1 +4+64+3

14%卡填寫違法了Luhn算法,也就是這部分卡號都是可以提前通過Luhn校驗發現的。

結論是我們可以在填寫收款賬戶的時候,添加一種Luth算法的JS腳本檢查用戶填寫的卡號存在問題。當然即時用戶填寫的卡號違法了該規則,我們仍然運行用戶填寫,但給出相應的警示內容(可能填錯)。

目前在收銀臺頁面(Checkout.vm)針對信用卡的交易,校驗的JS :isValidCardfunction函數就包含了Luth校驗規則,必須嚴格按照該規則的卡才能提交表單。

以上就是基于Luhn算法的銀行卡校驗規則的詳細內容,更多關于Luhn銀行卡校驗的資料請關注html5模板網其它相關文章!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

主站蜘蛛池模板: 品牌设计_VI设计_电影海报设计_包装设计_LOGO设计-Bacross新越品牌顾问 | 好笔杆子网 - 公文写作学习交流分享平台 | 医用酒精_84消毒液_碘伏消毒液等医用消毒液-漓峰消毒官网 | 消防设施操作员考试报名时间,报名入口,报考条件 | LOGO设计_品牌设计_VI设计 - 特创易 | 焊接减速机箱体,减速机箱体加工-淄博博山泽坤机械厂 | 汕头市盛大文化传播有限公司,www.11400.cc | 二手回收公司_销毁处理公司_设备回收公司-找回收信息网 | 正压送风机-多叶送风口-板式排烟口-德州志诺通风设备 | 低粘度纤维素|混凝土灌浆料|有机硅憎水粉|聚羧酸减水剂-南京斯泰宝 | 膜结构车棚|上海膜结构车棚|上海车棚厂家|上海膜结构公司 | 碳钢法兰厂家,非标法兰,定制异型,法兰生产厂家-河北九瑞管道 | 东莞注册公司-代办营业执照-东莞公司注册代理记账-极刻财税 | 赛尔特智能移动阳光房-阳光房厂家-赛尔特建筑科技(广东)有限公司 | 涡轮流量计_LWGY智能气体液体电池供电计量表-金湖凯铭仪表有限公司 | 硬质合金模具_硬质合金非标定制_硬面加工「生产厂家」-西迪技术股份有限公司 | 安德建奇火花机-阿奇夏米尔慢走丝|高维|发那科-北京杰森柏汇 | 博客-悦享汽车品质生活| 百度关键词优化_网站优化_SEO价格 - 云无限好排名 | 武汉画册印刷厂家-企业画册印刷-画册设计印刷制作-宣传画册印刷公司 - 武汉泽雅印刷厂 | 江西自考网-江西自学考试网| 北京软件开发_软件开发公司_北京软件公司-北京宜天信达软件开发公司 | 齿辊分级破碎机,高低压压球机,立式双动力磨粉机-郑州长城冶金设备有限公司 | 陕西安闸机-伸缩门-车牌识别-广告道闸——捷申达门业科技 | 杭州火蝠电商_京东代运营_拼多多全托管代运营【天猫代运营】 | 造价工程师网,考试时间查询,报名入口信息-网站首页 | 购买舔盐、舔砖、矿物质盐压块机,鱼饵、鱼饲料压块机--请到杜甫机械 | 澳门精准正版免费大全,2025新澳门全年免费,新澳天天开奖免费资料大全最新,新澳2025今晚开奖资料,新澳马今天最快最新图库-首页-东莞市傲马网络科技有限公司 | 微学堂-电动能源汽车评测_电动车性能分享网 | 宝元数控系统|对刀仪厂家|东莞机器人控制系统|东莞安川伺服-【鑫天驰智能科技】 | 碳钢法兰厂家,非标法兰,定制异型,法兰生产厂家-河北九瑞管道 | 水厂自动化-水厂控制系统-泵站自动化|控制系统-闸门自动化控制-济南华通中控科技有限公司 | 土壤墒情监测站_土壤墒情监测仪_土壤墒情监测系统_管式土壤墒情站-山东风途物联网 | 超声骨密度仪,双能X射线骨密度仪【起草单位】,骨密度检测仪厂家 - 品源医疗(江苏)有限公司 | 移动厕所租赁|移动卫生间|上海移动厕所租赁-家瑞租赁 | 高压贴片电容|贴片安规电容|三端滤波器|风华电容代理南京南山 | 杭州画室_十大画室_白墙画室_杭州美术培训_国美附中培训_附中考前培训_升学率高的画室_美术中考集训美术高考集训基地 | 传动滚筒_厂家-淄博海恒机械制造厂 | 莱州网络公司|莱州网站建设|莱州网站优化|莱州阿里巴巴-莱州唯佳网络科技有限公司 | 泰国试管婴儿_泰国第三代试管婴儿_泰国试管婴儿费用/多少钱_孕泰来 | 背压阀|减压器|不锈钢减压器|减压阀|卫生级背压阀|单向阀|背压阀厂家-上海沃原自控阀门有限公司 本安接线盒-本安电路用接线盒-本安分线盒-矿用电话接线盒-JHH生产厂家-宁波龙亿电子科技有限公司 |