身份证校验

来源:互联网 发布:java访问https 编辑:程序博客网 时间:2024/05/01 03:19
/** *  身份证校验 * *  @param cardNo 待校验身份证号码 * *  @return BOOL YES/NO */+(BOOL)checkIdentityCardNo:(NSString*)cardNo{    if (cardNo.length != 18) {        return  NO;    }    NSArray* codeArray = [NSArray arrayWithObjects:@"7",@"9",@"10",@"5",@"8",@"4",@"2",@"1",@"6",@"3",@"7",@"9",@"10",@"5",@"8",@"4",@"2", nil];    NSDictionary* checkCodeDic = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:@"1",@"0",@"X",@"9",@"8",@"7",@"6",@"5",@"4",@"3",@"2", nil]  forKeys:[NSArray arrayWithObjects:@"0",@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"10", nil]];    NSScanner* scan = [NSScanner scannerWithString:[cardNo substringToIndex:17]];    int val;    BOOL isNum = [scan scanInt:&val] && [scan isAtEnd];    if (!isNum) {        return NO;    }    int sumValue = 0;    for (int i =0; i<17; i++) {        sumValue+=[[cardNo substringWithRange:NSMakeRange(i , 1) ] intValue]* [[codeArray objectAtIndex:i] intValue];    }    NSString* strlast = [checkCodeDic objectForKey:[NSString stringWithFormat:@"%d",sumValue%11]];    if ([strlast isEqualToString: [[cardNo substringWithRange:NSMakeRange(17, 1)]uppercaseString]]) {        return YES;    }    return  NO;}
原创粉丝点击