驗證信用卡號
1. 從 "右邊第二個數字" 開始,每隔一位都乘以 2。其餘乘以 1。
例:VISA 16 位
D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 D12 D13 D14 D15 D16
D16*1 = c1 D15*2 = a1b1
D14*1 = c2 D13*2 = a2b2
D12*1 = c3 D11*2 = a3b3
D10*1 = c4 D9*2 = a4b4
D8*1 = c5 D7*2 = a5b5
D6*1 = c6 D5*2 = a6b6
D4*1 = c7 D3*2 = a7b7
D2*1 = c8 D1*2 = a8b8
2. 公式 Y = (c1+a1+b1) + (c2+a2+b2) + ... + (c8+a8+b8)
若能被 10 整除則正確。
例如: 4500232931373506
6 5 0 6 2 3 2 9 3 1 3 7 3 5 0 6
x2 x2 x2 x2 x2 x2 x2 x2
--------------------------------
12 00 04 04 06 06 06 02
Y = 5 + 6 + 3 + 9 + 1 + 7 + 5 + 6 +
(1+2) + (0+0) + (0+4) + (0+4) + (0+6) + (0+6) + (0+6) + (0+2)
= 70
70 能被 10 整除所以正確.
各種卡長度不太一樣,請特別注意是從 "右邊第二個數字" 這句話的意思。
有興趣請到 http://www.beachnet.com/~hstiles/cardtype.html 看看。
               (
geocities.com/huanlin_tsai)