JS 전후단 신분증 번호 인증 코드 분석 실현
실명제는 많은 사이트에서 반드시 필요한 기능이기 때문에 사용자는 자주 신분증 번호를 입력해야 하지만 우리는 공안국의 데이터베이스에 연결되어 신분증과 성명 주소가 일치하는지 검증할 수 없기 때문에 신분증 생성 규칙에 따라 신분증 형식의 검증을 할 수 있다. 다음은 2세대 신분증의 검증만 소개한다.
계산 공식
공민 신분번호는 특징 조합 코드로 17자리 디지털 본체 코드와 한 개의 검사 코드로 구성되어 있다.
배열 순서는 왼쪽에서 오른쪽으로 여섯 자리 숫자 주소 코드, 여덟 자리 숫자 출생 날짜 코드, 세 자리 숫자 순서 코드와 한 개의 검사 코드입니다.
1. 주소 코드: 인코딩 대상이 상주하는 현(시, 기, 구)의 행정구역 구분 코드를 나타내고 GB/T2260의 규정에 따라 집행한다.
2. 출생 날짜 코드: 인코딩 대상이 태어난 년, 월, 일을 나타내고 GB/T7408의 규정에 따라 집행되며 년, 월, 일 코드 사이에는 구분자가 없다.
3. 순서 코드: 같은 주소 코드에 표시된 구역 범위 내에서 같은 해, 같은 달, 같은 날에 태어난 사람에게 정해진 순서 번호, 순서 코드의 홀수는 남성에게 분배되고 짝수는 여성에게 분배된다.
4. 검증 코드 계산 단계:
(1) 17자리 숫자 본체 코드 가중치 및 공식:
S=Sum(Ai*Wi), i=0,..., 16, 먼저 17자리 숫자에 대한 권구화;
Ai: i위치의 주민등록번호 숫자값(0~9)을 표시합니다.
Wi:79 10 5 8 42 1 6 3 7 9 10 5 8 42 (제 i 위치의 가중 인자 표시)
(2) 계산 모드: Y =mod(S, 11);
(3) 모델에 따라 대응하는 검사 코드를 찾습니다: Y:0 1 2 3 4 5 6 7 9 10 검사 코드: 1 0 X 9 8 7 6 5 4 32;
프런트엔드 검증
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
}
}
총결산신분증 검증과 핸드폰 번호 메일박스 등 형식 검증은 똑같다. 모두 전후단 이중 검증을 해야 한다. 전단 검증이 통과하지 않으면 후단 검증을 귀찮게 하지 않고 서버의 압력을 줄여야 한다.
한 세대 신분증의 검증에 대해 여러분도 관련 알고리즘을 조회할 수 있습니다. 원래의 기초 위에서 고치면 됩니다. 저는 지금도 한 세대 신분증이 없는 것 같습니다. 아니면 한 세대 신분증을 사용하는 사람들이 인터넷을 잘 하지 않기 때문에 여기에 쓰지 않습니다.
이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되고 저희를 많이 응원해 주십시오.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JS 판단 수조 네 가지 실현 방법 상세그러면 본고는 주로 몇 가지 판단 방식과 방식 판단의 원리를 바탕으로 문제가 있는지 토론하고자 한다. 예를 들어 html에 여러 개의 iframe 대상이 있으면 instanceof의 검증 결과가 기대에 부합되지 않을...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.