无需登录 数据私有 本地保存

ISO 7064校验码计算 - 身份证/账号校验

26
0
0
0
ISO 7064 MOD 97-10:广泛用于IBAN国际银行账号、社保账号等。校验码为2位数字(00-97)。
ISO 7064 MOD 11-2:校验码为0-9或X(代表10)。权重从右到左循环使用2-10。
ISO 7064 MOD 37-2:支持0-9(值0-9)和A-Z(值10-35),校验码额外支持*(值36)。权重从右到左循环使用2-37。
常见问题与知识点

ISO 7064是国际标准化组织制定的校验字符系统标准,全称为"Information technology — Security techniques — Check character systems"。它定义了多种数学算法,用于检测数据在录入或传输过程中是否发生错误。常见的子系统包括:

  • MOD 11-2:用于中国身份证号码、ISBN、部分税号等
  • MOD 97-10:用于IBAN国际银行账号、社保账号等金融领域
  • MOD 37-2:支持字母数字混合编码,用于产品序列号等
  • MOD 11,10:混合系统,可检测更多类型的错误

中国18位身份证采用ISO 7064 MOD 11-2变体算法,具体步骤:

  1. 前17位数字分别乘以固定权重:[7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
  2. 将17个乘积求和,得到总和S
  3. 计算余数:R = S mod 11
  4. 根据映射表转换为校验码:0→1, 1→0, 2→X, 3→9, 4→8, 5→7, 6→6, 7→5, 8→4, 9→3, 10→2

权重来源于2^(18-i) mod 11(i=1到17),这种设计能有效检测单数字错误和相邻数字换位错误。

MOD 97-10是ISO 7064中检测能力最强的纯数字校验系统之一:

  • 检测率极高:模数97足够大,能检测99%以上的常见录入错误
  • 双校验位:提供00-97共98个可能的校验值,远多于单校验位系统
  • IBAN标准:国际银行账号(IBAN)采用此算法,将字母转换为数字后再进行MOD 97-10校验
  • 计算简单:只需mod 97运算,适合计算机高效处理

校验公式:校验码 = 98 - (本体码 × 100 mod 97),验证时整个数字 mod 97 应等于1。

在ISO 7064 MOD 37-2系统中:

  • 字符集包含0-9(值0-9)和A-Z(值10-35),共36个有效字符
  • 校验码的取值范围是0-36,共37个可能值
  • 当校验码值为36时,使用特殊字符"*"(星号)表示
  • 这种设计确保了校验系统能覆盖完整的37个余数类

权重从右到左循环使用2到37(共36个权重值),模数为37。

位数含义说明
第1-2位省份代码如11=北京,44=广东
第3-4位城市代码各省内城市编码
第5-6位区县代码城市下辖区县编码
第7-14位出生日期YYYYMMDD格式
第15-17位顺序码同日出生者排序,第17位奇=男,偶=女
第18位校验码ISO 7064 MOD 11-2算法生成

  • 验证模式:输入包含校验位的完整号码,系统验证校验码是否正确。例如输入18位身份证号,判断第18位是否正确。
  • 计算模式:输入不含校验位的本体码,系统自动计算并生成正确的校验码。例如输入17位身份证本体码,自动算出第18位。

工具会自动识别输入长度,智能切换模式,您也可以手动选择。

ISO 7064各子系统设计用于检测常见的人为录入错误

  • 单字符替换错误(如123→126):100%检测
  • 相邻字符换位错误(如123→132):MOD 11-2可检测100%的此类错误
  • 双字符替换错误:高概率检测
  • 移位错误(整体错位):部分可检测
  • 随机错误:MOD 97-10检测率超过99.9%