驗證信用卡號

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 看看。

    Source: geocities.com/huanlin_tsai/faq

               ( geocities.com/huanlin_tsai)