Objective-C通過Luhn算法實現的信用卡校驗代碼
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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!