18位验证计算功能-ASP教程,ASP应用程序

电脑杂谈  发布时间:2020-06-27 02:22:07  来源:网络整理

生分证号码大全 身份_asp 验证邮箱格式_asp 验证号码

因为我需要升级,验证和查询15位ID卡号,并且找不到现成的功能,所以我自己编写了一个简单的流程,希望能帮助需要帮助的朋友.

此功能的功能是单一的,您只能检查第18个数字是否正确或获取第18个数字,并保留其他功能供大家扩展!

<%

版本: 1.0.1

作者: sfply(sfply@163.com)

最后修改时间: 2004/7/17 12:03

src是ID卡号,可以是15位数字或18位数字,当只有15位数字时,只能通过返回验证码来使用

ichk参数的值为true和false,true表示验证src是否为18位ID卡,并验证第18位是否为正确编号以确定它是否为有效ID卡,以及返回值是true还是false

False表示返回正确的校验码,返回值为(1〜x)

昏暗我的身份

myidentify =“ 36050219781218133?”

response.write chkidentiycard(myidentify,false)

功能chkidentiycard(src,ichk)

asp 验证号码_asp 验证邮箱格式_生分证号码大全 身份

dim mywi,myai,mysrc(17),i,mycount

myai =“ 10×98765432”

mywi = split(“ 7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2”,“,”)

如果是ichk

如果len(src)= 18,那么

对于i = 0到16

mysrc(i)= mid(src,i + 1,1)

mycount = mycount + mysrc(i)* mywi(i)

下一个

如果mid(myai,(mycount mod 11)+1,1)= right(src,1),则

chkidentiycard = true返回结果,true为合法ID验证码

其他

chkidentiycard = false返回结果,false是非法ID卡的验证码

生分证号码大全 身份_asp 验证号码_asp 验证邮箱格式

如果结束

其他

chkidentiycard = false因为它不是18位ID卡,所以返回false

如果结束

其他

如果len(src)= 15或len(src)= 18,则

如果len(src)= 15,则src = mid(src,1,6)&“ 19”&mid(src,7,9)

对于i = 0到16

mysrc(i)= mid(src,i + 1,1)

mycount = mycount + mysrc(i)* mywi(i)

下一个

chkidentiycard = mid(myai,(mycount mod 11)+1,1)返回正确的验证码

其他

生分证号码大全 身份_asp 验证号码_asp 验证邮箱格式

chkidentiycard = false,输入的不是15位或18位ID号

如果结束

如果结束

结束功能

%>

关于第18张的计算方法asp 验证号码,原理如下

根据中华人民共和国国家标准gb 11643-1999中关于公民编号的规定,公民编号是多种功能的组合,由17位数字的身体代码和一位数字的验证码组成. 从左到右的排列顺序是: 六位地址码,八位出生日期码,三位顺序码和一位校验码.

地址代码表示编码目标永久居所所在县(市,州asp 验证号码,州,县)的行政区划代码. 生日日期代码表示编码对象的出生年份,月份和日期,其中年份用四位数字表示,并且年份,月份和日期之间没有分隔符. 顺序码表示分配给在同一地址码标识的区域内在同一年,月和日出生的人的顺序号. 序列码的奇数分配给男性,偶数分配给女性. 校验码是根据前面的十七位数字代码和iso 7064: 1983.mod 11-2校验码计算得出的校验码. 以下是计算方法的示例.

首先使用15位ID代码将出生年份扩展为4位数字,最简单的方法是添加19位数字,但这不适用于1900年出生的人(生日星不多)

首先要根据公式calculated计算得出的男性公民的身分代码为34052419800101001.

∑(ai×wi)(mod 11)…………………………(1)

在公式(1)中:

i--指示从左到左的数字字符的序列号,包括校验码;

asp 验证邮箱格式_asp 验证号码_生分证号码大全 身份

ai--表示第i个位置的数字字符值;

wi-显示第i个位置的加权因子,其值根据公式wi = 2(n-1)(mod 11)计算.

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

ai 3 4 0 5 2 4 1 9 8 0 0 1 0 1 0 0 1 a1

wi 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 1

ai×wi 21 36 0 25 16 16 2 9 48 0 0 9 0 5 0 0 2 a1

根据公式(1)计算:

∑(ai×wi)=(21 + 36 + 0 + 25 + 16 + 16 + 2 + 9 + 48 ++ 0 + 0 + 9 + 0 + 5 + 0 + 0 + 2)= 189

189÷11 = 17 + 2/11

∑(ai×wi)(mod 11)= 2

然后根据计算结果,从下表中找到相应的校验码,其中x表示计算结果为10:

∑(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

根据上表,找到了计算结果2的验证码,因此该人的公民编号应为34052419800101001x.

a [0] * 7 + a [1] * 9 + a [2] * 10 + a [3] * 5 + a [4] * 8 + a [5] * 4 + a [6] * 2 + a [7] * 1 + a [8] * 6 + a [9] * 3

+ a [10] * 7 + a [11] * 9 + a [12] * 10 + a [13] * 5 + a [14] * 8 + a [15] * 4 + a [16] * 2


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-259770-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...