身份证校验算法与ASP程序

时间:2021-05-25

18位身份证校验算法
身份证校验码算法
身份证校验码产生方法:
∑(ai×Wi)(mod11)

i:表示号码字符从由至左包括校验码在内的位置序号;

ai表示第i位置上的号码字符值;

Wi第i位置上的加权因子,其数值Wi=mod(power(2,(n-1)),11)

i181716151413121110987654321
Wi79105842163791058421

相应的校验码:
∑(ai×WI)(mod11)012345678910
校验码字符值ai10X98765432

下面是校验函数:

FUNCTIONsfzjy(num)
iflen(num)=15then
cID=left(num,6)&"19"&right(num,9)
elseiflen(num)=17orlen(num)=18then
cID=left(num,17)
endif
nSum=mid(cID,1,1)*7
nSum=nsum+mid(cID,2,1)*9
nSum=nsum+mid(cID,3,1)*10
nSum=nsum+mid(cID,4,1)*5
nSum=nsum+mid(cID,5,1)*8
nSum=nsum+mid(cID,6,1)*4
nSum=nsum+mid(cID,7,1)*2
nSum=nsum+mid(cID,8,1)*1
nSum=nsum+mid(cID,9,1)*6
nSum=nsum+mid(cID,10,1)*3
nSum=nsum+mid(cID,11,1)*7
nSum=nsum+mid(cID,12,1)*9
nSum=nsum+mid(cID,13,1)*10
nSum=nsum+mid(cID,14,1)*5
nSum=nsum+mid(cID,15,1)*8
nSum=nsum+mid(cID,16,1)*4
nSum=nsum+mid(cID,17,1)*2
'*计算校验位
check_number=12-nsummod11
Ifcheck_number=10thencheck_number="X"elseIfcheck_number=12thencheck_number="1"elseifcheck_number=11thencheck_number="0"Endifsfzjy=check_number
Endfunction



其它校验:
性别与出生年月:

sfznum=身份证号码
lenx=len(sfznum)
iflenx=15then
yy="19"&mid(xian,7,2)
mm=mid(xian,9,2)
dd=mid(xian,11,2)
aa=mid(xian,15,1)'15位身分证取第十五位,能被2整除为女性

endif
iflenx=18then
yy=mid(xian,7,4)
mm=mid(xian,11,2)
dd=mid(xian,13,2)
aa=mid(xian,17,1)'18位身分证取第十七位,能被2整除为女性
endif
ifaamod2=0then
xb="女"
else
xb="男"
endif

iflenx=18then
ifmid(xian,18,1)<>cstr(sfzjy(xian))then'如果第十八位校验码不等于计算出的校验码则身份证号码有误.
response.write"提示:身份证校验位错误!"
else
response.write"结果:身份证号码校验为合法号码!"
endif
else'如果输入的是十五位号,则计算出十八位新号
response.write"新身份证:"&left(xian,6)&"19"&right(xian,9)&cstr(sfzjy(xian))
endif

关于户籍判断则而要数据库.这里就不提供了.

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章