身份证校验算法与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

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

(0)

相关推荐

  • 身份证校验算法与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

  • PHP身份证校验码计算方法

    中国(大陆)公民身份证号码每一位所代表的意义,网上很多文章都有介绍,在此就不多说.其中身份证号码的最后一位是校验码,跟据前17位计算得到.算法大 概是这样:把前17位的每一个数字和一串加权因子相乘,再计算这些乘积的和:把这些乘积的和模11得到的数字作为序号,最后在一个校验码串中提取出与序号 相对应的字符.当然,网上也有不少的文章教大家计算这个校验码,下面我们将尝试用PHP语言来完成这一工作,也许可以用于PHP开发中,如校验用户的身份证号码是否正确. 假设某中国(大陆)公民的身份证号码前17位是这

  • 巧用缓存提高asp程序的性能

    <!--为了提高Asp程序的性能,人们常常将经常使用的数据缓存在 Application, 但是你修改了数据库后怎么让application更新呢,本文给你提供了一个合理的解决办法,如果谁有更好的算法,请跟帖讨论一下,谢谢 --> <% Class wawa_app_getrows public Function wawa_Get_List(strapp,strconn,strsql) '******************************** '功能:从Application中

  • oracle 身份证校验函数的实例代码

    1.正则表达式写法: CREATE OR REPLACE FUNCTION Func_checkidcard (p_idcard IN VARCHAR2) RETURN INT IS v_regstr VARCHAR2 (2000); v_sum NUMBER; v_mod NUMBER; v_checkcode CHAR (11) := '10X98765432'; v_checkbit CHAR (1); v_areacode VARCHAR2 (2000) := '11,12,13,14,

  • IOS 身份证校验详细介绍及示例代码

    IOS 身份证校验 身份证基础知识: 身份证是国民的身份编号,编号是有一定规律的,这里介绍身份证验证规则比较详细.项目中经常会需要对身份证进行校验,我们先了解一些基本知识,然后分析代码 居民身份证号码,根据[中华人民共和国国家标准 GB 11643-1999]中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成.排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码. 居民身份证是国家法定的证明公民个人身份的有效证件. 结

  • JS正则表达式完美实现身份证校验功能

    注意: 1.只针对18为身份证号码进行校验,现在15位的应该很少了, 2.不区分xX大小写, 3.出生年份1900-2099,每月的天数也进行相关验证(考虑的闰月的情况), 4.校验规则详见,这个写的比较详细和清楚,相信看过后都可以自己写一个, https://jingyan.baidu.com/article/7f41ececff944a593d095c8c.html 5.目前还无法对区位码就进行精确校验,本人搜集整理了区位码,提供了一个查询api,仅攻参考. 有不精确的地方可以留言指出 ap

  • 用python实现面向对像的ASP程序实例

    本文实例讲述了用python实现面向对像的ASP程序的方法.分享给大家供大家参考.具体实现方法如下: 平时我们写ASP时,一般都用vbscript或javascript. javascript是用function来实现类的,很麻烦,而且效果不爽. vbscript虽然可以实现类,但是功能上也有很大的局限性. 如果用python来写ASP脚本,就可以实现真的类,成为真正的面向对像.请看下面的例子: 复制代码 代码如下: <%@LANGUAGE="python" CODEPAGE=&

  • 实现ASP程序执行时间统计类的代码

    第一次写ASP类,实现功能:分段统计程序执行时间,输出统计表等.  复制代码 代码如下: Class ccClsProcessTimeRecorder  '程序作者:明月星光  '作者主页:http://www.5iya.com/blog  'http://www.kuozhanming.com  'ASP程序代码执行时间统计类 Private ccInti,ccIntNonceTime,ccIntDecimal    Private ccIntStartTime,ccIntEndTime,cc

  • ASP程序与SQL存储过程结合使用详解

    定义总是很抽象.存储进程其实就是能完成一定操作的一组SQL语句,只不过这组语句是放在数据库中的(这里我们只谈SQL SERVER).如果我们通过创建存储进程以及在ASP中调用存储进程,就可以避免将SQL语句同ASP代码混杂在一起.这样做的好处至少有三个:    第一.大大提高效率.存储进程本身的执行速度非常快,而且,调用存储进程可以大大减少同数据库的交互次数.    第二.提高安全性.假如将SQL语句混合在ASP代码中,一旦代码失密,同时也就意味着库结构失密.    第三.有利于SQL语句的重用

  • 飞云写的防CC攻击的ASP程序插件 打包下载

    <% '================== '飞云防CC攻击ASP程序插件 '建议除必须修改的参数内容外不要修改其他内容 '如果需要反馈错误或提交意见,可以到落伍(IM286.COM)联系 "正版飞云" '================== dim FYCC_19,FYCC_20,FYCC_21,FYCC_05 dim FYCC_18 FYCC_05="" 'CCLog.txt存放的路径文件夹!需要手动创建!建议留空 '如果输入,请在前面加上符号"

随机推荐