話說最近常遇到有「卡號錯誤」的問題,後來在網路上google了一下,原來信用卡卡號也是有規則的。
除了前幾碼的bin碼區分各國際組織以外(3:JCB / 4:VISA / 5:MASTER / 6:銀聯、DFS…等),就一般信用卡號而言(AE卡除外)卡號一共16碼,最後1碼是檢查碼。
檢核規則如下:
① 奇數碼(1/3/5/7/9/11/13/15)數字x2,若乘出來的數字大於10則該數字的十位/個位數相加。
② 把上述數字再直接與偶數位(2/4/6/8/10/12/14,不含第16位)數字相加。
③ 檢核碼的算法:把②所得到的數值,補足該數的最近10的倍數值為檢核碼。簡單的說,若②算出來的值為87,則檢核碼為 90-87=3。算法:把②的數值x9,再MOD 10即可。
其實可以依上述規則,透過EXCEL來產生檢核檔案,用以驗證卡號是否正確。
提示使用函數:MOD(取餘函數)、QUOTIENT(取商函數),用這二個EXCEL函數就可以完成該檔案了。
雖然卡號有規則,但最重要的CVV2(後三碼)及EXP DATE(到期日)是各個發卡行自行設定的,這部份就沒規則了,所以也排除了盜刷的可能性。
參考來源:https://mirlab.org/jang/books/javascript/dataRule.asp?title=10-4%20%B1%60%A5%CE%B8%EA%AE%C6%B3W%ABh