信用卡简单Mod 10校验






2.53/5 (9投票s)
2005年5月7日

60911

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; }