Object-C 銀行卡,信用卡校驗規則(Luhn算法)


最近的項目中涉及到綁定用戶的銀行卡,借記卡。經過查找銀行卡的校驗規是采用 Luhn算法進行驗證。

 

Luhn算法,也被稱作“模10算法”。它是一種簡單的校驗公式,一般會被用於身份證號碼,IMEI號碼,美國供應商識別號碼,或是加拿大的社會保險號碼的驗證,主要用來計算信用卡等證件號碼的合法性。

 

  1. 從卡號最后一位數字開始,逆向將奇數位(135等等)相加。
  2. 從卡號最后一位數字開始,逆向將偶數位數字,先乘以2(如果乘積為兩位數,則將其減去9),再求和。
  3. 將奇數位總和加上偶數位總和,結果應該可以被10整除。

例如,卡號是:5432123456788881

則奇數、偶數位(逆向奇數位為紅色字體,偶數位為默認字體)分布:5432123456788881

奇數位                            4 2 2 4 6 8 8 1   求和=35

偶數位乘以2(若乘積大於9就要減去9)的結果:1 6 2 6 1 5 7 7,求和=35

最后35+35=70可以被10整除,認定校驗通過。

 1 -(BOOL) checkCardNumber:(NSString *) cardNumber{ 
 2      
 3       int sum = 0; 
 4       int len = [cardNumber length]; 
 5       int i = 0; 
 6      
 7       while (i < len) { 
 8           NSString *tmpString = [cardNo substringWithRange:NSMakeRange(len - 1 - i, 1)]; 
 9           int tmpVal = [tmpString intValue]; 
10           if (i % 2 != 0) { 
11                tmpVal *= 2; 
12               if(tmpVal>9) { 
13                    tmpVal -= 9;
14       } 
15           } 
16           sum += tmpVal; 
17           i++; 
18       } 
19      
20       if((sum % 10) == 0) 
21           return YES; 
22       else 
23           return NO;
24 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM