65.9K
CodeProject 正在变化。 阅读更多。
Home

信用卡简单Mod 10校验

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.53/5 (9投票s)

2005年5月7日

viewsIcon

60911

downloadIcon

479

本文描述了一种简单的方法来验证信用卡。

引言

本文演示了一种在表单中输入信用卡时检测错误的一种简单方法。这种方法通常被称为Mod 10校验。通过避免向银行的往返,这为电子商务企业节省了大量的时间和金钱。该程序使用Mod-10方法(ISO 2894/ANSI 4.13)来验证信用卡号码的有效性。

根据这种方法,从信用卡号码的最后一位数字开始,将每第二个数字乘以二。如果结果数字大于9,则从该数字中减去9,使其成为个位数。现在将所有数字相加,并对10取模。如果结果为0,则信用卡号码有效。

private bool ValidateCreditCardNumber(string creditCardNumber)
{
    //Replace any character other than 0-9 with ""
    creditCardNumber = Regex.Replace(creditCardNumber,@"[^0-9]","");
  
    int cardSize = creditCardNumber.Length;

    //Creditcard number length must be between 13 and 16
    if (cardSize >= 13 && cardSize <= 16)
    {
       int odd = 0;
       int even = 0;
       char[] cardNumberArray = new char[cardSize];

       //Read the creditcard number into an array
       cardNumberArray = creditCardNumber.ToCharArray();

       //Reverse the array
       Array.Reverse(cardNumberArray, 0, cardSize);

       //Multiply every second number by two and get the sum. 
       //Get the sum of the rest of the numbers.
       for (int i = 0; i < cardSize; i++)
       {
          if (i%2 ==0)
          {
             odd += (Convert.ToInt32(cardNumberArray.GetValue(i))-48);   
          }
          else
          {
             int temp = (Convert.ToInt32(cardNumberArray[i]) - 48) * 2;
             //if the value is greater than 9, substract 9 from the value
             if (temp > 9)
             {
                temp = temp-9;
             }
             even += temp;
          }
        }
        if ((odd+even)%10 == 0)     
           return true;
        else
           return false;
      }
      else
         return false;
  } 
© . All rights reserved.