/**
* 銀行卡號一般是16位或者19位。
* 由如下三部分構成。
* 1,前六位是:發行者標識**
* 2,中間的位數是:個人賬號標識(從卡號第七位開始),一般由6-12位數字組成。最多可以使用12位數字。
* 3,最後一位是:根據卡號前面的數字,採用luhn演算法計算出的最後一位校驗位
*/public static boolean checkbankcard(string cardid)
if(cardid.length()<16 || cardid.length()>19)
//根據luhm法則得到校驗位
char bit = getbankcardcheckcode(cardid.substring(0, cardid.length() - 1));
if(bit == 'n')
//和銀行卡號的校驗位(最後一位)比較,相同為true 不同為false
return cardid.charat(cardid.length() - 1) == bit;
} /**
* 從不含校驗位的銀行卡卡號採用 luhm 校驗演算法獲得校驗位
* 該校驗的過程:
* 1、從卡號最後一位數字開始,逆向將奇數字(1、3、5等等)相加。
* 2、從卡號最後一位數字開始,逆向將偶數字數字(0、2、4等等),先乘以2(如果乘積為兩位數,則將其減去9或個位與十位相加的和),再求和。
* 3、將奇數字總和加上偶數字總和,結果應該可以被10整除。
*/public static char getbankcardcheckcode(string noncheckcodecardid)
char chs = noncheckcodecardid.trim().tochararray();
int luhmsum = 0;
/*** 注意是從下標為0處開始的
*/for(int i = chs.length - 1, j = 0; i >= 0; i--, j++)
luhmsum += k;
} return (luhmsum % 10 == 0) ? '0' : (char)((10 - luhmsum % 10) + '0');
}
銀行卡校驗規則
銀行卡號碼,一般是13 19位,由 卡bin 發卡行自定位 校驗位 三部分構成,其中 1 前6位是卡bin,由國際標準化組織分配給從事跨行轉接交換的銀行卡組織 2 發卡機構自定義位由6 12位數字組成,由發卡機構賦予 3 卡號的後1位數字,根據校驗位以前的數字 包括bin 取值按luhn方程計算得出...
php銀行卡校驗
前言 銀行金卡,維薩和萬事達 銀聯品牌,如果是貸記卡或準貸記卡,一定為16位卡號。而借記卡可以16 19位不等。美國運通卡則不論金卡或是白金卡 普通卡,都是15位卡號。16 19 位卡號校驗位採用 luhm 校驗方法計算 將未帶校驗位的 15 位卡號從右依次編號 1 到 15,位於奇數字型大小上的數...
校驗銀行卡是否正確
多說無益,貼 校驗銀行卡卡號 param cardid return public static boolean checkbankcard string cardid 從不含校驗位的銀行卡卡號採用 luhm 校驗演算法獲得校驗位 param noncheckcodecardid return pu...