Objective-C通過Luhn算法實現的信用卡校驗代碼

jopen 9年前發布 | 2K 次閱讀 Objective-C IOS

Objective C通過Luhn算法實現的信用卡校驗代碼
使用Luhn算法(Luhn algorithm)校驗信用卡號的:
1、從卡號最右邊開始,由右向左,奇數位數字直接累加;
2、從卡號最右邊開始,由右向左,偶數位數字先乘以2(如果乘積為兩位數,則將這兩位數再次累加或者將其減去9),再求和。
例如:10 = 1 + 0 = 1, 14 = 1 + 4 = 5 等價于 10 - 9 = 1, 14 - 9 = 5;
3、將奇數位總和加上偶數位總和,結果對10取模為0。
例如,卡號是:356827027232780
奇數位和=28
偶數位乘以2(有些要減去9)的結果求和=32。
最后28+32=70 % 10 = 0,信用卡號校驗通過。

+ (BOOL)checkCreditCardNumber:(NSString *)cardNum
{
    NSAssert(cardNum && cardNum != @"" , @"checkCreditCardNumber: cardNum is nil.");

NSInteger len = [cardNum length];
NSInteger sumNumOdd = 0;
NSInteger sumNumEven = 0;
BOOL isOdd = YES;

for (NSInteger i = len - 1; i >= 0; i--) {

    NSInteger num = [cardNum substringWithRange:NSMakeRange(i, 1)].integerValue;
    if (isOdd) {//奇數位
        sumNumOdd += num;
    }else{//偶數位
        num = num * 2;
        if (num > 9) {
            num = num - 9;
        }
        sumNumEven += num;
    }
     isOdd = !isOdd;
}

return ((sumNumOdd + sumNumEven) % 10 == 0);

}</pre>

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!