久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁技術文章
文章詳情頁

JS前后端實現(xiàn)身份證號驗證代碼解析

瀏覽:107日期:2024-04-29 10:57:23

前言

實名制是許多網站都必備的功能,因此用戶經常需要輸入身份證號,但是我們無法連通公安局的數據庫進行驗證身份證和姓名地址是否匹配,因此可以根據身份證生成的規(guī)則來進行身份證格式的驗證,以下僅介紹二代身份證的驗證。

計算公式

公民身份號碼是特征組合碼,由十七位數字本體碼和一位校驗碼組成。

排列順序從左至右依次為:六位數字地址碼,八位數字出生日期碼,三位數字順序碼和一位校驗碼。

1、地址碼:表示編碼對象常住戶口所在縣(市、旗、區(qū))的行政區(qū)域劃分代碼,按GB/T2260的規(guī)定執(zhí)行。

2、出生日期碼:表示編碼對象出生的年、月、日,按GB/T7408的規(guī)定執(zhí)行,年、月、日代碼之間不用分隔符。

3、順序碼:表示在同一地址碼所標識的區(qū)域范圍內,對同年、同月、同日出生的人編定的順序號,順序碼的奇數分配給男性,偶數分配給女性。

4、校驗碼計算步驟:

(1)十七位數字本體碼加權求和公式:

S = Sum(Ai * Wi), i = 0, … , 16 ,先對前17位數字的權求和;Ai:表示第i位置上的身份證號碼數字值(0~9);Wi:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 (表示第i位置上的加權因子);

(2)計算模:Y = mod(S, 11);

(3)根據模,查找得到對應的校驗碼:Y: 0 1 2 3 4 5 6 7 8 9 10 校驗碼: 1 0 X 9 8 7 6 5 4 3 2;

前端驗證

const weight = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2];//十七位數字本體碼權重const validate = [’1’,’0’,’X’,’9’,’8’,’7’,’6’,’5’,’4’,’3’,’2’];//mod11,對應校驗碼字符值function getValidateCode(id17){ let sum = 0; let mode = 0; [...id17].forEach((elem,i) => { sum=sum+parseInt(elem)*weight[i]; }); mode = sum % 11; return validate[mode];}console.log('該身份證驗證碼:'+ getValidateCode('14230219700101101'));//該身份證驗證碼:3

后端驗證(Java)

public class Id18 { int[] weight={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};//十七位數字本體碼權重 char[] validate={ ’1’,’0’,’X’,’9’,’8’,’7’,’6’,’5’,’4’,’3’,’2’};//mod11,對應校驗碼字符值 public char getValidateCode(String id17){ int sum = 0; int mode = 0; for(int i = 0; i < id17.length(); i++){ sum=sum+Integer.parseInt(String.valueOf(id17.charAt(i)))*weight[i]; } mode = sum % 11; return validate[mode]; } public static void main(String[] args){ Id18 tes t= new Id18(); System.out.println('該身份證驗證碼:'+test.getValidateCode('14230219700101101'));//該身份證校驗碼:3 }}

總結

身份證驗證和手機號郵箱等格式驗證是一樣的,都要做前后端雙重驗證,前端驗證不通過就不勞煩后端驗證,減輕服務器的壓力;

至于一代身份證的驗證大家也可以查詢下相關的算法,在原基礎上改改即可,我感覺現(xiàn)在好像也沒有一代身份證了,亦或者用一代身份證的人都不怎么上網,因此這里就不寫了。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: JavaScript
相關文章:
主站蜘蛛池模板: 新龙县| 余江县| 南木林县| 肇庆市| 肇源县| 孝感市| 黄龙县| 嘉鱼县| 凤台县| 民丰县| 阿坝县| 浮梁县| 溧水县| 大港区| 菏泽市| 沽源县| 泸溪县| 德令哈市| 龙山县| 芦山县| 禄劝| 鲁山县| 松滋市| 绥德县| 布尔津县| 土默特左旗| 屯门区| 彭阳县| 博乐市| 辽中县| 滕州市| 莱芜市| 九江市| 丰城市| 满洲里市| 格尔木市| 安多县| 巫山县| 营口市| 罗甸县| 莲花县|