package com.base.common.util;
/*
当你输入信用卡号码的时候,有没有担心输错了而造成损失呢?其实可以不必这么担心,
因为并不是一个随便的信用卡号码都是合法的,它必须通过Luhn算法来验证通过。
该校验的过程:
1、从卡号最后一位数字开始,逆向将奇数位(1、3、5等等)相加。
2、从卡号最后一位数字开始,逆向将偶数位数字,先乘以2(如果乘积为两位数,则将其减去9),再求和。
3、将奇数位总和加上偶数位总和,结果应该可以被10整除。
例如,卡号是:5432123456788881
则奇数、偶数位(用红色标出)分布:5432123456788881
奇数位和=35
偶数位乘以2(有些要减去9)的结果:1 6 2 6 1 5 7 7,求和=35。
最后35+35=70 可以被10整除,认定校验通过。
*/
public class BankCheck {
/*
* 银行卡是由”发卡行标识代码 + 自定义 + 校验码 “等部分组成的 BIN号 银联标准卡与以往发行的银行卡最直接的区别就是其卡号前6位数字的不同。
* 银行卡卡号的前6位是用来表示发卡银行或机构的,称为“发卡行识别码”(Bank Identification Number,缩写为“BIN”)。
* 银联标准卡是由国内各家商业银行
* (含邮储、信用社)共同发行、符合银联业务规范和技术标准、卡正面右下角带有“银联”标识(目前,新发行的银联标准卡一定带有国际化的银联新标识
* ,新发的非银联标准卡使用旧的联网通用银联标识)、 卡号前6位为622126至622925之一的银行卡,是中国银行卡产业共有的民族品牌。
*/
// BIN号
private final static String[] BANKBIN = { "621098", "622150", "622151",
"622181", "622188", "955100", "621095", "620062", "621285",
"621798", "621799", "621797", "620529", "622199", "621096",
"621622", "623219", "621674", "623218", "621599", "370246",
"370248", "370249", "427010", "427018", "427019", "427020",
"427029", "427030", "427039", "370247", "438125", "438126",
"451804", "451810", "451811", "458071", "489734", "489735",
"489736", "510529", "427062", "524091", "427064", "530970",
"530990", "558360", "620200", "620302", "620402", "620403",
"620404", "524047", "620406", "620407", "525498", "620409",
"620410", "620411", "620412", "620502", "620503", "620405",
"620408", "620512", "620602", "620604", "620607", "620611",
"620612", "620704", "620706", "620707", "620708", "620709",
"620710", "620609", "620712", "620713", "620714", "620802",
"620711", "620904", "620905", "621001", "620902", "621103",
"621105", "621106", "621107", "621102", "621203", "621204",
"621205", "621206", "621207", "621208", "621209", "621210",
"621302", "621303", "621202", "621305", "621306", "621307",
"621309", "621311", "621313", "621211", "621315", "621304",
"621402", "621404", "621405", "621406", "621407", "621408",
"621409", "621410", "621502", "621317", "621511", "621602",
"621603", "621604", "621605", "621608", "621609", "621610",
"621611", "621612", "621613", "621614", "621615", "621616",
"621617", "621607", "621606", "621804", "621807", "621813",
"621814", "621817", "621901", "621904", "621905", "621906",
"621907", "621908", "621909", "621910", "621911", "621912",
"621913", "621915", "622002", "621903", "622004", "622005",
"622006", "622007", "622008", "622010", "622011", "622012",
"621914", "622015", "622016", "622003", "622018", "622019",
"622020", "622102", "622103", "622104", "622105", "622013",
"622111", "622114", "622200", "622017", "622202", "622203",
"622208", "622210", "622211", "622212", "622213", "622214",
"622110", "622220", "622223", "622225", "622229", "622230",
"622231", "622232", "622233", "622234", "622235", "622237",
"622215", "622239", "622240", "622245", "622224", "622303",
"622304", "622305", "622306", "622307", "622308", "622309",
"622238", "622314", "622315", "622317", "622302", "622402",
"622403", "622404", "622313", "622504", "622505", "622509",
"622513", "622517", "622502", "622604", "622605", "622606",
"622510", "622703", "622715", "622806", "622902", "622903",
"622706", "623002", "623006", "623008", "623011", "623012",
"622904", "623015", "623100", "623202", "623301", "623400",
"623500", "623602", "623803", "623901", "623014", "624100",
"624200", "624301", "624402", "62451804", "62451810", "62451811",
"62458071", "623700", "628288", "624000", "628286", "622206",
"621225", "526836", "513685", "543098", "458441", "620058",
"621281", "622246", "900000", "544210", "548943", "370267",
"621558", "621559", "621722", "621723", "620086", "621226",
"402791", "427028", "427038", "548259", "356879", "356880",
"356881", "356882", "528856", "621618", "620516", "621227",
"621721", "900010", "625330", "625331", "625332", "623062",
"622236", "621670", "524374", "550213", "374738", "374739",
"621288", "625708", "625709", "622597", "622599", "360883",
"360884", "625865", "625866", "625899", "621376", "620054",
"620142", "621428", "625939", "621434", "625987", "621761",
"621749", "620184", "621300", "621378", "625114", "622159",
"621720", "625021", "625022", "621379", "620114", "620146",
"621724", "625918", "621371", "620143", "620149", "621414",
"625914", "621375", "620187", "621433", "625986", "621370",
"625925", "622926", "622927", "622928", "622929", "622930",
"622931", "620124", "620183", "620561", "625116", "622227",
"621372", "621464", "625942", "622158", "625917", "621765",
"620094", "620186", "621719", "621719", "621750", "621377",
"620148", "620185", "621374", "621731", "621781", "552599",
"623206", "621671", "620059", "403361", "404117", "404118",
"404119", "404120", "404121", "463758", "514027", "519412",
"519413", "520082", "520083", "558730", "621282", "621336",
"621619", "622821", "622822", "622823", "622824", "622825",
"622826", "622827", "622828", "622836", "622837", "622840",
"622841", "622843", "622844", "622845", "622846", "622847",
"622848", "622849", "623018", "625996", "625997", "625998",
"628268", "625826", "625827", "548478", "544243", "622820",
"622830", "622838", "625336", "628269", "620501", "621660",
"621661", "621662", "621663", "621665", "621667", "621668",
"621669", "621666", "625908", "625910", "625909", "356833",
"356835", "409665", "409666", "409668", "409669", "409670",
"409671", "409672", "456351", "512315", "512316", "512411",
"512412", "514957", "409667", "518378", "518379", "518474",
"518475", "518476", "438088", "524865", "525745", "525746",
"547766", "552742", "553131", "558868", "514958", "622752",
"622753", "622755", "524864", "622757", "622758", "622759",
"622760", "622761", "622762", "622763", "601382", "622756",
"628388", "621256", "621212", "620514", "622754", "622764",
"518377", "622765", "622788", "621283", "620061", "621725",
"620040", "558869", "621330", "621331", "621332", "621333",
"621297", "377677", "621568", "621569", "625905", "625906",
"625907", "628313", "625333", "628312", "623208", "621620",
"621756", "621757", "621758", "621759", "621785", "621786",
"621787", "621788", "621789", "621790", "621672", "625337",
"625338", "625568", "621648", "621248", "621249", "622750",
"622751", "622771", "622772", "622770", "625145", "620531",
"620210", "620211", "622479", "622480", "622273", "622274",
"621231", "621638", "621334", "625140", "621395", "622725",
"622728", "621284", "421349", "434061", "434062", "436728",
"436742", "453242", "491031", "524094", "526410", "544033",
"552245", "589970", "620060", "621080", "621081", "621466",
"621467", "621488", "621499", "621598", "621621", "621700",
"622280", "622700", "622707", "622966", "622988", "625955",