WEB开发网
开发学院WEB开发ASP ASP Luhn检验数字算法函数 Luhn Check Digit Algo... 阅读

ASP Luhn检验数字算法函数 Luhn Check Digit Algorithm Fun()

 2009-05-04 10:40:23 来源:WEB开发网   
核心提示:因为用到信用卡验证,就找了一下,ASP Luhn检验数字算法函数 Luhn Check Digit Algorithm Fun(),找到以下知识及函数,先普及一下知识:Luhn 检验数字算法(Luhn Check Digit Algorithm,函数: 程序代码<% ' Copyright (c) 20

因为用到信用卡验证,就找了一下,找到以下知识及函数,先普及一下知识:

Luhn 检验数字算法(Luhn Check Digit Algorithm,Luhn Algorithm,LUHN Formula)

Luhn 检验数字算法(Luhn Check Digit Algorithm),也叫做模数10公式,是一种简单的算法,用于验证银行卡、信用卡号码的有效性的算法。对所有大型信用卡公司发行的信用卡都起作用,这些公司包括美国ExPRess、护照、万事达卡、Discover和用餐者俱乐部等。这种算法最初是在20世纪60年代由一组数学家制定,现在Luhn 检验数字算法属于大众,任何人都可以使用它。

算法:将每个奇数加倍和使它变为单个的数字,如果必要的话通过减去9和在每个偶数上加上这些值。如果此卡要有效,那么,结果必须是10的倍数。


函数:


 程序代码
<%
   ' Copyright (c) 2008, reusablecode.blogspot.com; some rights reserved.
   '
   ' This work is licensed under the Creative Commons Attribution License. To view
   ' a copy of this license, visit http://creativecommons.org/licenses/by/3.0/ or
   ' send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California
   ' 94305, USA.

   ' Luhn (mod 10) algorithm
   function luhn(byVal input)
     dim sum
     dim odd
     dim currentDigit
     dim regEx

   input = CStr(input)
     sum = 0
     odd = CBool(len(input) mod 2)

   ' Remove any non-numeric characters.
     if not isNumeric(input) then
       set regEx = new RegExp
       regEx.Global = true
       regEx.Pattern = "\D"
       input = regEx.Replace(input, "")
       set regEx = nothing
     end if

   ' Calculate sum of digits.
     for i = 1 to len(input)
       currentDigit = cint(mid(input, i, 1))

     if odd then
         sum = sum + currentDigit
       else
         if currentDigit * 2 > 9 then
           sum = sum + (currentDigit * 2 - 9)
         else
           sum = sum + (currentDigit * 2)
         end if
       end if

     odd = not odd
     next

   ' Check validity.
     if sum mod 10 = 0 then
       luhn = true
     else
       luhn = false
     end if
   end function

   ' Unit test - expected result is true
   if luhn("9558821402001225732") then
     response.write "true"
   else
     response.write "false"
   end if
%>


注:卡号是百度上随便搜的,如有不妥敬请告知。有需要此函数的朋友可以自行搜索或者拿自己卡号做测试。

Tags:ASP Luhn 检验

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接