ISO 7064:1983.MOD11-2校验码计算法 : (身份证校验码-18位)
/*
假设某一17位数字是
17位数字 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7
加权因子 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
计算17位数字各位数字与对应的加权因子的乘积的和S:1×7+2×9+3×10+4×5+5×8+6×4+7×2+8×1+9×6+0×3+1×7+2×9+3×10+4×5+5×8+6×4+7×2=368;
计算S÷11的余数T:368 mod 11=5;
(( 余数0-10对应校验码为[1, 0, X , 9, 8, 7, 6, 5, 4, 3, 2],算法如下 ))
计算(12-T)÷11的余数R,如果R=10,校验码为罗马数字 10(Ⅹ)“X”;如果R≠10,校验码为数字“R”:(12-5)mod 11=7。
该17位数字的校验码就是7,聚合在一为123456789012345677。
*/
#include <stdio.h>
#include <string.h> int main(void)
{
char InNum[18];
char CheckNum[11] = {'1', '0', 'X' , '9', '8', '7', '6', '5', '4', '3', '2'};
int i = 0;
int Sum = 0; memset(InNum, 0, 18);
printf("\n请输入身份证前17位数字,按回车键结束:\n\t");
fflush(stdin);
scanf("%s",InNum); printf("\n输入的前17位数字为: \n\t");
for(i = 0;i < 17;i++)
{
// 将ASCII码值 转化为数字
InNum[i] -= 0x30;
printf("%d",InNum[i]);
} Sum = InNum[0]*7 + InNum[1]*9 + InNum[2]*10 + InNum[3]*5 + InNum[4]*8 +InNum[5]*4 + InNum[6]*2 + InNum[7]*1 + InNum[8]*6
+ InNum[9]*3 + InNum[10]*7 + InNum[11]*9 + InNum[12]*10 + InNum[13]*5 + InNum[14]*8 + InNum[15]*4 + InNum[16]*2; printf("\n生成的身份证号码为: \n\t");
for(i = 0;i < 17;i++)
printf("%d",InNum[i]);
printf("%c", CheckNum[Sum % 11]);
printf("\nOK\n");
return 0;
}
参考 : http://blog.csdn.net/n289950578/article/details/22287389
特别注意:
”Ⅹ“ 是 罗马数字 10, 不是 英文大写字母 ”X“, 此处为了编码方便,使用了英文字母 ‘X’ 代替;
罗马数字1到10的写法:I
,II ,III, IV ,V ,VI, VII ,VIII ,IX, X
罗马数字输入参考》》》 罗马数字1到10怎么打_百度经验
ISO 7064:1983.MOD11-2校验码计算法 : (身份证校验码-18位)的更多相关文章
- 一个完整的 JS 身份证校验代码
一个完整的 JS 身份证校验代码 身份证号码是由 18 位数字组成的,它们分别表示: (1) 前 1.2 位数字表示: 所在省份的代码; (2) 第 3.4 位数字表示: 所在城市的代码; (3) 第 ...
- Python 身份证校验代码
Python 身份证校验代码 居民身份证bai编号识别 1.身份证编码规则如下:根据[中华人民共和国国家标准GB11643-1999]中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本 ...
- java 实现从15位~18位的身份证号码转换,校验中国大陆公民身份证、香港居民身份证、澳门身份证和台湾身份证。
package xidian.sl.netcredit.util; /** * Copyright (C) 2009-2010 Yichuan, Fuchun All rights reserved. ...
- Java 常用正则表达式,Java正则表达式,Java身份证校验,最新手机号码正则表达式
Java 常用正则表达式,Java正则表达式,Java身份证校验,最新手机号码校验正则表达式 ============================== ©Copyright 蕃薯耀 2017年11 ...
- Delphi:校验手机号及身份证号
//校验手机号 function IsMobileNumber( num:string ):boolean; begin Result:=False; if length( tr ...
- Android5.1.1 - APK签名校验分析和修改源码绕过签名校验
Android5.1.1 - APK签名校验分析和修改源码绕过签名校验 作者:寻禹@阿里聚安全 APK签名校验分析 找到PackageParser类,该类在文件“frameworks/base/cor ...
- Powerbuilder编写身份证校验码
public function boolean of_calc_cardid_verifycode (string as_cardid, ref string as_verifycode); /* 计 ...
- 常用校验码(奇偶校验码、海明校验码、CRC校验码)
一.奇偶校验码 二.海明校验码 三.CRC校验码 计算机系统运行时,各个部之间要进行数据交换.交换的过程中,会有发生误码的可能(即0变成1或1变成0),由于计算机的储存是通过二进制代码来实现的的, ...
- 国家商用password(五)基于SM2的软件授权码生成及校验
将公开密钥算法作为软件注冊算法的优点是Cracker非常难通过跟踪验证算法得到注冊机.以下.将介绍使用SM2国密算法进行软件注冊的方法. 生成授权码 选择SM2椭圆曲线參数(P,a,b,N,Gx,Gy ...
随机推荐
- 洛谷 P1433 吃奶酪(记忆化)
题目描述 房间里放着n块奶酪.一只小老鼠要把它们都吃掉,问至少要跑多少距离?老鼠一开始在(0,0)点处. 输入输出格式 输入格式: 第一行一个数n (n<=15) 接下来每行2个实数,表示第i块 ...
- FTP文件服务器
import java.io.InputStream; import java.io.Serializable; import lombok.Data; @Data public class FtpB ...
- python使用mysql connection获取数据感知不到数据变化问题
在做数据同步校验的时候,需要从mysql fetch数据和hbase的数据进行对比,发现即使mysql数据变化了,类似下面的代码返回的值还是之前的数据.抽取的代码大概如下: import MySQL ...
- 常用的几个Dos命令-持续更新中
1.服务相关 (1).查看服务 C:\Windows\system32>net start 已经启动以下 Windows 服务: (2).启动服务 C:\Windows\system32> ...
- 第3章 DOM
1.节点,dom有3种节点,元素节点,文本节点,属性节点 2.元素节点是dom的原子,所有的属性节点和文本节点都被元素包含,但并不是所有的元素都包含他们 3.继承,节点树上的元素将继承父元素的样式和属 ...
- 在iframe内页面完全加载完后,关闭父页面生成的div遮罩层
遮罩层div为iframe父页面生成,需在iframe内页面完全加载完后,关闭遮罩层 alertMsgClose() :函数为关闭遮罩层函数 此段代码在iframe页面内: <script> ...
- Mysql导入导出大量数据的方法、备份恢复办法
经常使用PHP+Mysql的朋友一般都是通过phpmyadmin来管理数据库的.日常的一些调试开发工作,使用phpmyadmin确实很方便.但是当我们需要导出几百兆甚至几个G的数据库时,phpmyad ...
- CAD控件:网上打开dwg文件时,对dwg文件路径加密的功能
梦想CAD控件2015.03.12最新更新 1. 增加控件状态栏文字,自定义功能, C++接口为 : CStatusBarInformationReactor::CreatePro ...
- Python基础之简介
参考原文 廖雪峰Python教程 什么是Python? Python是一种计算机程序设计语言,又被称为胶水语言,它是高级的编程语言. Python能干什么? 网站后端程序员.自动化运维.数据分析师.游 ...
- lombok无法解析log
首先确认开发工具是否安装lombok,已安装的话打开lombok插件页,选择update, 然后重启idea.