銀行卡的校驗

2021-08-30 08:18:26 字數 1168 閱讀 3878

/**

* 銀行卡號一般是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...