首頁
中文書目錄
原文書目錄
 站內快速搜尋
資源中心
Book Series
Special Interest









■新書《深入淺出資料分析》出版了,請至各大書局訂購!........
Web Security, Privacy & Commerce
書名:電子商務與網路安全
作者:Simson Garfinkel with Gene Spafford
譯者:李國熙 / 陳永旺
書號:A052
ISBN:957-8247-37-0
頁數:542頁
出版日期:1999 年 12 月
售價:680

信用卡卡號核對演算法

信用卡號的最後一個數字,就是輸入過程中用來檢驗卡號是否正確時,所使用的核對數字。雖然此核對演算法早已公開(ISO 2894),但是目前還是很多人並不清楚它的作法。

演算法執行過程如下:

  1. 將卡號上的每個數字乘上其權重(weight),如果卡號上的數字個數是偶數,那麼第一個數字的權重就是 2,若是奇數,那麼權重就給 1,剩下來的數字,根據第一個數字依序給定。例如某信用卡卡號的數字個數為偶數,那麼從第一位數字開始的權重依序為 2、1、2、1、2、1 ...。
  2. 如果數字乘上自己的權重後比 9 還大,那麼就從這加權數字裡扣除 9。
  3. 接下來將所有處理過的加權數字全部加總起來,並且除以 10,取其餘數。
  4. 此餘數應該是 0,否則就可能是輸入過程有誤,也有可能信用卡號是假的。

這樣的算法可以用來檢驗數字輸入過程中可能發生的數字調換、位移等等輸入錯誤。此外這種算法也可以用在其它方面,當作安全裝置來使用【註】。如果我們把算法寫成Perl程式的話,便如下所示:

【註】讓我們擔心的是,某些商家竟使用此演算法當作是檢驗信用卡正確性的低價方法。然而此方法只能告訴我們卡號輸入過程是否錯誤發生,卻無法確切告訴我們信用卡的正確性。只要有心人蓄意造假,業者很可能遭受嚴重的損失。

sub validate_cc {
    local ($cc) = $_[0];
    local ($digit,$sum,$val);
    local ($weight) = 1;

    $weight = 2 if (length($cc) %2 ==0);

    while($cc ne ""){
            $digit = substr($cc,0,1);
            $cc = substr($cc,1);
            $val = $digit * $weight;
            $val-=9 if ($val>9);
            $sum += $val;
            $weight = ($weight==2) ? 1 : 2;

    }
    return ($sum % 10) == 0;

}

現在我們舉一個實例來看看(讀者也可以使用你信用卡號上的數字來試試看)。這是 Simson 所持有的美國運通卡號碼:3728 024906 54059。

卡號上共有15個數字。所以第一個數字的權重為1,全部的權重分別是1、2、1、2、1、2、1、2、1、2、1、2、1、2、1。我們將每個數字分別乘上它的權重:

(3 x 1) , (7 x 2) , (2 x 1) , (8 x 2) , (0 x 1) , (2 x 2) , (4 x 1) , (9 x 2) ,

(0 x 1) , (6 x 2) , (5 x 1) , (4 x 2) , (0 x 1) , (5 x 2) , (9 x 1)

得到它們個別的加權值:

(3) , (14) , (2) , (16) , (0) , (4) , (4) , (18) ,

(0) , (12) , (5) , (8) , (0) , (10) , (9)

將所有大於 9 的加權值扣除 9,然後相加:

(3) + (5) + (2) + (7) + (0) + (4) + (4) + (9) +

(0) + (3) + (5) + (8) + (0) + (1) + (9) = 60

最後將所有值相加,並且除以10,我們所得到的結果果然是0。

60 mod 10 = 0

請注意:千萬別冒用 Simson 的信用卡帳號。冒用信用卡是條重罪。

信用卡交易核對單

信用卡交易核對單可以讓我們清楚知道當次的交易訊息。在過去某段時間內,它都是使用紙條來進行記錄,並且在每次信用交易之後必須拿給客戶核對。漸漸地服務商發覺使用紙條的費用過高,不夠經濟,所以在 1970 年代中期,Visa 與 MasterCard 改變原有運作方式,每個月將信用交易資料總結後,才把核對單送回給客戶以供核對使用。1980 年代,美國運通公司開始將所有核對單資料數位化,並將交易訊息列印出來送回給客戶進行確認。現在,客戶已經很難見到最原始的核對單了。

隨著時間推移,交易核對單上的資訊也持續地增加中。下面所列出的要項是核單資料�不可漏缺的部分:

  • 客戶姓名
  • 客戶的信用卡號碼
  • 客戶的住址
  • 客戶編號
  • 交易日期
  • 交易金額
  • 商品或是服務的種類
  • 單據號碼
  • 授權代碼
  • 銷售商的名稱

雖然過去 20 年來,電腦已經逐漸取代傳統的文件作業方式,但是原有的文件內容我們仍須完整保留下來,因為這些文件資料有很重要的價值,它們能夠協助我們調查過去的交易記錄,並且提供我們信用詐欺事件的線索。


| 首頁 | 寫信給我們 |
© 2009, O'Reilly Media, Inc. Taiwan Branch