
ID验证码: 如何验证ID号码正确?
在开始验证号之前,我们必须首先了解上数字的含义:
ID号的结构=地址代码(前六位数字)+出生日期(第七至第十四位数字)+序列码(十五至十七位数字)+校验码(第十八位数字)
好吧,我知道ID号的结构,所以我们开始吧:
(1)17位数字本体代码的加权和公式
S =总和(Ai * Wi),i = 0,...,16,首先将前17位数字的权重相加
Ai: 表示第i个位置的ID号的数字值
Wi: 代表第i个位置的加权因子
Wi: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
(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
所以我们可以粗略地编写一个函数来验证它是否正确.

IDCheck = true
arrVerifyCode =拆分(“ 1,0,x,9,8,7,6,5,4,3,2”号码如何验证,“,”)
Wi =拆分(“ 7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2”,“,”)
Checker = Split(“ 1,9,8,7,6,5,4,3,2,1,1”,“,”)
如果Len(e)<15或Len(e)= 16 Or Len(e)= 17 OrLen(e)> 18然后
'IDCheck =“号码包含15个代码或18位数字”
IDCheck = False
退出功能
如果结束
Dim Ai
如果Len(e)= 18那么
Ai =中(e,1,17)
ElseIf Len(e)= 15然后
Ai = e
Ai =左(Ai,6)&“ 19”&中(Ai,7号码如何验证,9)
如果结束
如果不是非数字(Ai),则
'IDCheck =“必须是最后一个号码以外的数字!”
IDCheck = False
退出功能
如果结束
昏暗的strYear,strMonth,strDay
strYear = CInt(中(Ai,7,4))
strMonth = CInt(中(Ai,11,2))
strDay = CInt(中(Ai,13,2))
BirthDay =修剪(strYear)+“-” +修剪(strMonth)+“-” +修剪(strDay)
如果是IsDate(生日),那么
如果DateDiff(“ yyyy”,现在是生日)<-140 orcdate(生日)> date()然后
'IDCheck =“输入错误!”
IDCheck = False
退出功能
如果结束
如果strMonth> 12或strDay> 31然后
IDCheck = False
'IDCheck =“输入错误!”
退出功能
如果结束
其他
'IDCheck =“输入错误!”
IDCheck = False
退出功能
如果结束
Dim i,TotalmulAiWi
对于i = 0到16
TotalmulAiWi = TotalmulAiWi + CInt(Mid(Ai,i + 1,1))* Wi(i)
下一步
修改modValue
modValue = TotalmulAiWi Mod 11
昏暗strVerifyCode
strVerifyCode = arrVerifyCode(modValue)
Ai = Ai和strVerifyCode
IDCheck = Ai
如果Len(e)= 18 And e <>艾那
'IDCheck =“ ID号不正确!”
IDCheck = False
退出功能
如果结束
EndFunction body> html>
如果有任何问题,请欢迎纠正我,谢谢
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-169285-1.html
我们一直都在
当时买养老金就好了