關於銀行卡號識別

2021-07-09 20:02:59 字數 671 閱讀 1559

絕大部分的銀行卡號遵循luhn演算法,luhn演算法簡述如下:

luhn是著名的校驗和演算法也叫模10演算法,主要應用於解決銀行卡號,社保號等重要資訊傳輸出錯問題。

先來解釋下演算法原理,校驗和型別的演算法,一般是id+校驗號,校驗號和id號的每位相關,如果出錯,通過某種運算能檢測出這種改動。借用維基百科的例子我來解釋下。

我們以數字「7992739871」為例,計算其校驗位:

從校驗位開始,從右往左,偶數字乘2(例如,7*2=14),然後將兩位數字的個位與十位相加(例如,10:1+0=1,14:1+4=5);

把得到的數字加在一起(本例中得到67);

將數字的和取模10(本例中得到7),再用10去減(本例中得到3),得到校驗位。

但在實際中我們發現有些銀行發行的卡號並不遵循該演算法,如民生銀行的卡號:6226 2210 1942 5170,根據luhn演算法,最後的校驗位應該是3而不是0,所以對於銀行卡號的正確性判斷簡化為以下方式:

1、銀行卡號長度為16位~19位

2、銀行卡號每一位都是數字

3、根據銀行卡號前幾位和卡bin庫中的卡bin進行比對,識別為哪個銀行的卡號(卡bin的長度為2到10位不等)

4、如果通過卡bin判斷不出是哪個銀行的卡號,那麼讓使用者選擇這個銀行卡號是屬於哪個銀行(畢竟卡bin庫也是需要定期更新的,對於新發行的銀行卡卡bin不一定在該庫中存在)

openCV銀行卡號識別

銀行卡的識別與車牌識別都是類似的,有了opencv方便了很多,許多函式都不要自己動手去寫。include stdafx.h include cv.h include highgui.h include cxcore.h int main int argc,char argv int tempcoun...

通過銀行卡號識別歸屬銀行,php方式

這個例子不是很全,要做到齊全必須使用資料庫字典來索引,而且資料量龐大,建議生產使用時限制幾大行就行,直接不支援其他小行。此案例拋磚引玉 銀行卡資訊識別相關類 把bin號轉化為長整形,再把各個銀行卡的bin號做成有序表。通過二分查詢的方法,找到bin號在有序表的位置,然後讀出銀行卡的資訊。todo 字...

銀行卡號規則

答案一 前6位數字為發卡銀行識別號 bin 由iso國際組織統一制定。最後一位是校驗位,由前面組成卡號的十多位數字 常見的iso卡號有13位 16位 19位 通過特定演算法計算。前6位和最後一位之間的數字為金融機構自定義的卡號,有些銀行採用發卡地代號加卡序號的方式編碼 有些銀行的卡則是全國大序列。只...