身份证15位转18位升位转换工具详解

一、背景介绍

身份证号码是每个公民唯一的身份识别码。15位身份证号码由6位出生年份(不含世纪数)、4位出生月份和日期、3位顺序编号、1位校验码组成。18位身份证号码由17位同等位数数字加一位校验码组成,其中校验码由十七位数字根据ISO 7064:1983.MOD 11-2校验码计算得出。

因为15位身份证号码已经逐步被18位身份证号码取代,因此有时需要将15位身份证号码转换为18位身份证号码。本文介绍的15位身份证转18位身份证工具就可以帮助你完成这一转换。

二、转换原理

身份证15位号码与18位号码的转换,是根据公民的出生日期、出生地代码、顺序号、校验码,按照国家标准GB 11643-1999执行的算法来完成的。具体过程如下:

1、将15位身份证号码的第7-12位,即出生年份及月份日前加上对应的世纪年份20,如:741221 –> 19741221;

2、将15位身份证号码的第15-17位,即顺序号加3个随机数字,作为18位身份证号码的第14-16位;

3、计算身份证号码的校验码,具体算法可以参考国家标准GB 11643-1999。

三、代码实现

function transferID(oldID) {
  var idYear = oldID.substring(6,8);
  var century = "19";
  if (parseInt(idYear) >= 0 && parseInt(idYear) <= 22) {
    century = "20";
  }
  var newID = oldID.substring(0,6) + century + idYear + oldID.substring(8);
  var randomNum = Math.floor(Math.random() * 1000).toString();
  while (randomNum.length < 3) {
    randomNum = "0" + randomNum;
  }
  newID = newID.substring(0,14) + randomNum + newID.substring(14);
  var sum = 0;
  for (var i = 0; i < 17; i++) {
    sum += newID.charAt(i) * ((Math.pow(2, 17 - i)) % 11);
  }
  var checkCode = (12 - sum % 11) % 11;
  if (checkCode == 10) {
    checkCode = "X";
  } else {
    checkCode = checkCode.toString();
  }
  newID = newID + checkCode;
  return newID;
}

该函数接受一个15位身份证号码作为输入,输出对应的18位身份证号码。实现过程中,首先将15位身份证号码的出生年份加上世纪年份,并把加和结果替换原来的6-8位;然后在14-16位随机添加3个数字,形成新的18位身份证号码;最后通过校验码计算规则,计算出最后一位校验位并添加到最终的18位身份证号码中。

四、使用示例

var oldID = "110102760505001";
var newID = transferID(oldID);
console.log("15位身份证号码:" + oldID);
console.log("转换后的18位身份证号码:" + newID);

以上代码输出结果如下:

15位身份证号码:110102760505001

转换后的18位身份证号码:110102197605055000

五、注意事项

身份证是每个公民的重要身份证明,转换身份证号码时需要注意以下几点:

1、转换过程存在一定的错误率,因此建议使用时进行多次验证;

2、转换后的18位身份证号码并不一定是正确的身份证号码,仍需进一步核验。

原创文章,作者:CBFW,如若转载,请注明出处:https://www.506064.com/n/147388.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
CBFWCBFW
上一篇 2024-11-01 14:08
下一篇 2024-11-01 14:08

相关推荐

  • Python输入身份证判断地区

    在Python中,我们可以通过简单的代码来验证身份证号码的合法性,同时也可以从中提取出身份证所属的地区信息。 一、验证身份证号码的合法性 身份证号码是一个18位的字符串,其中最后一…

    编程 2025-04-27
  • 神经网络代码详解

    神经网络作为一种人工智能技术,被广泛应用于语音识别、图像识别、自然语言处理等领域。而神经网络的模型编写,离不开代码。本文将从多个方面详细阐述神经网络模型编写的代码技术。 一、神经网…

    编程 2025-04-25
  • Linux sync详解

    一、sync概述 sync是Linux中一个非常重要的命令,它可以将文件系统缓存中的内容,强制写入磁盘中。在执行sync之前,所有的文件系统更新将不会立即写入磁盘,而是先缓存在内存…

    编程 2025-04-25
  • Linux修改文件名命令详解

    在Linux系统中,修改文件名是一个很常见的操作。Linux提供了多种方式来修改文件名,这篇文章将介绍Linux修改文件名的详细操作。 一、mv命令 mv命令是Linux下的常用命…

    编程 2025-04-25
  • Python输入输出详解

    一、文件读写 Python中文件的读写操作是必不可少的基本技能之一。读写文件分别使用open()函数中的’r’和’w’参数,读取文件…

    编程 2025-04-25
  • git config user.name的详解

    一、为什么要使用git config user.name? git是一个非常流行的分布式版本控制系统,很多程序员都会用到它。在使用git commit提交代码时,需要记录commi…

    编程 2025-04-25
  • nginx与apache应用开发详解

    一、概述 nginx和apache都是常见的web服务器。nginx是一个高性能的反向代理web服务器,将负载均衡和缓存集成在了一起,可以动静分离。apache是一个可扩展的web…

    编程 2025-04-25
  • MPU6050工作原理详解

    一、什么是MPU6050 MPU6050是一种六轴惯性传感器,能够同时测量加速度和角速度。它由三个传感器组成:一个三轴加速度计和一个三轴陀螺仪。这个组合提供了非常精细的姿态解算,其…

    编程 2025-04-25
  • 详解eclipse设置

    一、安装与基础设置 1、下载eclipse并进行安装。 2、打开eclipse,选择对应的工作空间路径。 File -> Switch Workspace -> [选择…

    编程 2025-04-25
  • Python安装OS库详解

    一、OS简介 OS库是Python标准库的一部分,它提供了跨平台的操作系统功能,使得Python可以进行文件操作、进程管理、环境变量读取等系统级操作。 OS库中包含了大量的文件和目…

    编程 2025-04-25

发表回复

登录后才能评论