首页 | 联系我们 | 叶凡网络官方QQ群:323842844
游客,欢迎您! 请登录 免费注册 忘记密码
您所在的位置:首页 > 开发语言 > ASP开发 > 正文

合肥做asp网站:ASP Luhn检验数字算法函数技巧

作者:cocomyyz 来源:转载 日期:2013-10-29 9:25:33 人气:0 加入收藏 评论:0 标签:合肥做asp网站:ASP Luhn检验数字算法函数技巧

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

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
%>


本文网址:http://www.mingyangnet.com/html/asp/642.html
读完这篇文章后,您心情如何?
  • 0
  • 0
  • 0
  • 0
  • 0
  • 0
  • 0
  • 0
更多>>网友评论
发表评论
编辑推荐
  • 没有资料