身份证号码验证(15位)(100分)

  • 主题发起人 主题发起人 duhai_lee
  • 开始时间 开始时间
D

duhai_lee

Unregistered / Unconfirmed
GUEST, unregistred user!
网上有很多18位身份证验证算法, 也有很多15位升到18位得算法。
可是如果15位的号码是错误的,那么升到18位, 就可以通过验证了。

如:111111111111111(15个1)
升级后就是:1111111911111113
这个身份证号码正确嘛? 但是18位的算法就可以通过。

我想要个15位的验证算法。。

那位有啊?
 
15位号码没有验证位,你只能通过计算15号码的各个号码段是否在你已有的地区,生日是否合法等等着手来验证
 
楼上说的对,网上所有输入身份证的地方都不可能校验15的身份证
 
对于开始就没有校验位的东东你就是无法校验的。
只有在网上与公安局校验了。
 
网上验证是不现实的, 速度和环境都受到限制。
 
不用想了,15位没有校验的
18位的校验也只是对前17位的数字进行的计算结果,没有办法验证这个身份证是否真实存在,只能验证是否是一个合法的身份证号码
 
帮不了你[:)]
 
15位身份证号分为3段,
前6位是行政区划,随后的6位是2位年+2位月+2位日,最后3位是尾号段,你要校验只能分段校验,看是不是有效的行政区划,是不是有效日期。
 
那最后三位是怎么计算出来的??
 
最后三位是按順序給的,男單女雙. 是按出生地,出生日期順序排的, 如第一個男孩是001,第二個男孩是003,等, 不能校驗用.
 
男的单数,女的又数,带小数的是人妖[:D]
 
谁有行政区划对应的表, 给我传一份, 谢谢。

duhai_lee@126.com
 
我身份证尾数是0,是单还是双啊!!!!
 
bgqy2000
你看看自己下面就知道了啊 [:D]
 
哪位有对照表?? 区域的??
 
最后一位算法
procedure TForm1.Button2Click(Sender: TObject);
var
num, i: integer;
PersonID: ShortString;
Code: string[1];
begin
PersonID := '13010319620914121';
PersonID := '34052419800101001';
num:= 0;
for i := 18 downto 2 do
num := num + Trunc(power(2, i-1)) mod 11 * (ord(PersonID[19 - i])-$30);
num := num mod 11;
case num of
0: code := '1';
1: code := '0';
2: code := 'X';
3: code := '9';
4: code := '8';
5: code := '7';
6: code := '6';
7: code := '5';
8: code := '4';
9: code := '3';
10: code := '2';
end;
PersonID := PersonID + code;
end;
 
我有,我有晚上回家给你。
 
区域对照表
http://www.delphibbs.com/delphibbs/DispQ.asp?LID=2647232
 
谢谢“忍我”

duhai_lee@126.com
 
后退
顶部