首页 > 其他分享 >校验码原理介绍

校验码原理介绍

时间:2023-11-15 14:36:47浏览次数:37  
标签:10 九数 介绍 校验码 地址码 身份证 原理 同余

目录


What is Check digit?

以人人都有,人人都必须要记得的身份证举例,18位数字组合的方式是:

4个码解释:

  • 地址码
    对于内地户籍居民,地址码是公民首次获得身份号码(例如新生儿出生登记、无户口人员登记户口)时所在县(市、镇、区)的行政区划代码,如110102是北京市西城区,如果日后行政区划出现调整或将户口迁往外地地址码也不会改变。由于新生儿通常根据属人主义确定户籍,故地址码并不总能代表公民的出生地。
    对于港澳台居民,地址码根据居民的实际身份分配香港、澳门或台湾的行政区划代码,只精确到省级,第三位至第六位全部为0。[1][2][3]
  • 出生日期码
    表示公民出生的公历年(4位)、月(2位)、日(2位)。
  • 顺序码
    是给同地址码同出生日期码的人编定的顺序号,其中奇数分配给男性,偶数分配给女性。
  • 校验码
    这里采用的是ISO 7064:1983, MOD 11-2校验码系统。校验码为一位数,但如果最后采用校验码系统计算的校验码是“10”,碍于身份证号码为18位的规定,则以“X”代替校验码“10”。

思考:这个校验码是什么?怎么计算出来的?

校验码的原理

身份证的最后一位数字就是验证码,是通过前面的数字进行简单的数学运算后计算出来的。下面我们就来看一下它究竟是怎么算出来的,为什么要进行这样的运算。

为什么会有 X?

最后一位只能有:1-10 里面任意一个数字。

身份证后面的X并不是字母X,而是罗马数字里的10。为什么不写10呢?因为如果是10,写出来身份证号码就变成19位了。在编码学中,不一样的数位就不太容易存储或者使用。

那么问题来了,那为什么最后一位的校验码会算出10呢?怎么能算出1-10?
需要了解一下弃九数

弃九数的验算启发

什么叫弃九数?
比如有一个数字是3217

  • 如果把它每一位上的数字连续相加,3加2加1加7等于13。
  • 继续把13的每一位上的数字相加,1加3等于4。
  • 直到得到个位数字4为止,这个4就叫做3217的弃九数。
    (其实这个弃九数就是3217除以9之后的余数,只不过这种连续相加是一种快速算法,很早以前的数学家就知道了。)

弃九数有什么用呢?
它关键是要检验运算是否准确。 这个时候就有弃九法了,大家想一想,平常在计算加减乘除运算的时候,是不是经常容易算错?古人就很聪明,发明了弃九法。

比如,
现在要检查一个乘法运算:3169乘以732等于2319708是否准确?
如果没有别的方法的话,只能把它重新算一遍。
但是弃九法是怎么检验的?首先把3169的弃九数求出来,它是1。就是把每一位连续相加,最后得到个位数字1。
732它的弃九数是3。
2319708的弃九数是3。
最后,(用等式迁移的思维)我们看一下,1乘以3是不是等于3,结果是准确的。 1 * 3 = 3

这说明前面非常大的数字的乘法运算,大概率是正确的。但是如果用弃九法检验是错误的,说明前面的运算一定是错误的。
这就是古人的验算方法,充满了智慧(智慧一定不是指莽干)。

数学家只是有高维优势,普通计算都一样菜!

古代也有很多工程类计算,需要达到高精度的运算,前辈的数学家也需要检验。即使是一流的数学家,他也只是比普通人在考虑高维问题的时候具有优势。但是如果是比纯粹的加减乘除运算,数学家相对普通人来讲,其实他们的差别并不大。

弃九法和同余理论的关系

在弃九法发展的过程中,数学家们逐渐还认识到了弃七法、弃十一法、弃十三法等。这些方法其实都属于今天初等数论中的同余理论。

初等数论的教学大纲(高中数学课本):

什么是同余理论?

(这里只是初步入门介绍)
这种同余理论在我们日常生活中比较常见的服务是什么?
是计算校验码。 回归到正题了,身份证最后一位就是校验码。
注意:我说的校验码和你手机里的短信验证码,不是一码事,不是一个概念!注意区分。

为什么需要校验码?

和我们生活最息息相关的校验码就在身份证上。我们平常在手机或者电脑经常需要输入身份证号码,假如没有校验码,就是输入17位数字,很容易发生不小心有一位输错了,键盘的数字挨着近,或者某两位颠倒位置的情况。 那么有了第18位校验码,就能及时发现这种情况。正是因为一个小小的校验码,就可以保证整个系统的安全性。

身份证的校验码计算步骤(文字描述版):

那它是怎么算的?主要分三步:

  1. 首先身份证号码总共是17位,把前17位号码依次乘以不同的系数。比如第一位乘以7,第二位乘以9,第三位乘以10,以此类推,这在数学上叫做加权因子。相同两位加权因子不一样,是为了区分数位。(加权因子的作用)

系数为:7、9、10、5、8、4、2、1、6、3、7、9、10、5、8、4、2

更通俗的说:第1位*7、第2位*9、第3位*10、第4位*5、第5位*8、第6位*4、第7位*2、第8位*1、第9位*6、第10位*3、第11位*7、第12位*9、第13位*10、第14位*5、第15位*8、第16位*4、第17位*2
  1. 把这17个乘积相加,然后取模11得余数;

  2. 余数和校验码对应表:

余数 0 1 2 3 4 5 6 7 8 9 10
校验码 1 0 X 9 8 7 6 5 4 3 2

计算出来的余数和校验码表对应,如果对应上了,就是正确。如果对应不上,就是错误。

身份证的校验码计算步骤(公式描述版):

实际做一次操作

例子:410928198904015474

\[4*7+1*9+0*10+9*5+2*8+8*4+1*2+9*1+8*6+9*3+0*7+4*9+0*10+1*5+5*8+4*4+7*2 = 327 \]

\[327 mod 11 = 8 \]

8 对应 4 ,正确!

同余理论的验证思想,无处不在

  • 计算校验码,各种校验码,书后面的,钱上的,证件上的,身份证...
  • 信号丢失
    在通信中,信号丢失是很正常的情况。为了防止信号丢失所造成的损失。可以考虑在信号后面加上校验码,这样前面如果丢失一个数字的情况下,还可以通过校验码找回来。如果信号是N位的,而我们在后面加上N-1位,那么就可以有前面丢失了N-1位时还能找回完整的信息。这种方法比单纯的重复发一遍信息要有效得多。
    编码是代数中的一个应用分支,是非常有用的。

Reference

https://mp.weixin.qq.com/s/dRlWjcysXM7vsIC2Y4aEUg

标签:10,九数,介绍,校验码,地址码,身份证,原理,同余
From: https://www.cnblogs.com/mysticbinary/p/17833441.html

相关文章

  • 硬件开发笔记(十一):Altium Designer软件介绍、安装过程和打开pcb工程测试
    前言  前面做高速电路,选择是阿li狗,外围电路由于读者熟悉AD,使用使用ad比较顺手,非高速电路就使用AD了,其实AD也可以做高速电路,由于笔者从13年开始做硬是从AD9开始的,所以开始切入AD做硬件软件学习成本会低很多。 AltiumDesigner简介  AltiumDesigner是原Protel软......
  • Vue双向数据绑定原理-上
    Vue响应式的原理(数据改变界面就会改变)是什么?时时监听数据变化,一旦数据发生变化就更新界面,这就是Vue响应式的原理。Vue是如何实现时时监听数据变化的通过原生JS的defineProperty方法,通过get和set方法来监听数据的变化。defineProperty方法的特点可以直接在一个对象上定义一......
  • 本地MQTT协议消息服务远程连接教程介绍
    Mosquitto是一个开源的消息代理,它实现了MQTT协议版本3.1和3.1.1。它可以在不同的平台上运行,包括Windows、Linux、macOS等。mosquitto可以用于物联网、传感器、移动应用程序等场景,提供了一种轻量级的、可靠的、基于发布/订阅模式的消息传递机制。MQTT协议远程访问的好处在于它可以......
  • .NET6中的await原理浅析
    前言看过不少关于await的原理的文章,也知道背后是编译器给转成了状态机实现的,但是具体是怎么完成的,回调又是如何衔接的,一直都没有搞清楚,这次下定决心把源码自己跑了下,终于豁然开朗了本文的演示代码基于VS2022+.NET6示例publicclassProgram{staticint......
  • PCL滤波大全、原理+代码实例+操作步骤
    #include<pcl/filters/passthrough.h>滤波代码实例:1//Createthefilteringobject2pcl::PassThrough<pcl::PointXYZ>pass;//声明直通滤波3pass.setInputCloud(cloud);//传入点云数据4pass.setFilterFieldName("z");......
  • 【汽车科普】汽车构造与原理2.车身
    汇总【汽车科普】汽车构造与原理目录1.引言Body车身,汽车身体的简称。在这个仍旧以貌取车的年代,车身是最先受人们关注的地方,它担负着展示汽车形象气质、风格特点的任务。对于承载式的轿车车身来说,其任务更重,要承载发动机、变速器等几乎所有汽车部件,同时还要抵抗撞击、翻......
  • zookeeper节点介绍
    参考:https://blog.51cto.com/u_15535797/6076363节点特性zookeeper中节点叫znode存储结构上跟文件系统类似,以树级结构进行存储。不同之外在于znode没有目录的概念,不能执行类似cd之类的命令。znode结点属性如下:path:唯一路径childNode:子节点stat:状态属性type:节点类型......
  • 国外著名交易策略:R-Breaker模型设计原理(转载)
    R-Breaker是一种短线日内交易策略,它结合了趋势和反转两种交易方式。交易系统的基本原理如下:1.根据前一个交易日的收盘价、最高价和最低价数据通过一定方式计算出六个价位,从大到小依次为:突破买入价、观察卖出价、反转卖出价、反转买入价、观察买入价、突破卖出价。以此......
  • MYSQL 事务的底层原理
    事务的底层原理在事务的实现机制上,MySQL采用的是WAL:Write-aheadlogging,预写式日志,机制来实现的。在使用WAL的系统中,所有的修改都先被写入到日志中,然后再被应用到系统中。通常包含redo和undo两部分信息。为什么需要使用WAL,然后包含redo和undo信息呢?举个例子,如果一......
  • SqlServer索引原理分析
     中小企业MIS系统的管理基本上由两大部份组成,一是前台的可视化操作,二是后台的数据库管理。网管对前台的管理和维护工作包括保障网络链路通畅、处理MIS终端的突发事件以及对操作员的管理、培训等,这是网管们日常做得最多、最辛苦的功课;然而MIS系统架构中同等重要的针对数据库的管......