程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> ASP編程 >> 關於ASP編程 >> 身份證校驗算法與ASP程序

身份證校驗算法與ASP程序

編輯:關於ASP編程
18位身份證校驗算法 
身份證校驗碼算法 
身份證校驗碼產生方法:
∑(ai×Wi)(mod 11)

i: 表示號碼字符從由至左包括校驗碼在內的位置序號;

ai 表示第i位置上的號碼字符值;

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

i 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
Wi 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 1

相應的校驗碼:
∑(ai×WI)(mod 11) 0 1 2 3 4 5 6 7 8 9 10
校驗碼字符值ai 1 0 X 9 8 7 6 5 4 3 2

下面是校驗函數:

FUNCTION sfzjy(num)
if len(num)=15 then
cID = left(num,6)&"19"&right(num,9)
  elseif len(num)=17 or len(num)=18 then
cID = left(num,17)
  end if 
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-nsum mod 11
If check_number=10 then check_number="X" elseIf check_number=12 then check_number="1" elseif check_number=11 then check_number="0" End if sfzjy=check_number
End function



其它校驗:
性別與出生年月:

sfznum=身份證號碼
lenx=len(sfznum)       
    if lenx=15 then 
        yy="19"&mid(xian,7,2)
        mm=mid(xian,9,2)
        dd=mid(xian,11,2)
        aa=mid(xian,15,1)    '15位身分證取第十五位,能被2整除為女性

    end if 
    if  lenx=18 then
        yy=mid(xian,7,4)
        mm=mid(xian,11,2)
        dd=mid(xian,13,2)
        aa=mid(xian,17,1)         '18位身分證取第十七位,能被2整除為女性
    end if 
if aa mod 2=0 then 
  xb="女"
  else
  xb="男"
end if 

if lenx=18 then
if mid(xian,18,1)<>cstr(sfzjy(xian)) then    '如果第十八位校驗碼不等於計算出的校驗碼則身份證號碼有誤.
  response.write "提示:身份證校驗位錯誤!"
  else
   response.write "結果:身份證號碼校驗為合法號碼!" 
end if
  else           '如果輸入的是十五位號,則計算出十八位新號
  response.write "新身份證:"&left(xian,6)&"19"&right(xian,9)&cstr(sfzjy(xian))
end if

關於戶籍判斷則而要數據庫.這裡就不提供了.
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved