0

身份证号的 X 是不是一个糟糕的设计?

 1 year ago
source link: https://www.v2ex.com/t/867724
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

V2EX  ›  问与答

身份证号的 X 是不是一个糟糕的设计?

  Wallace01 · 1 小时 23 分钟前 · 1622 次点击
身份证号校验位(最后一位)的设计原理是,用前面的数字通过一系列计算结果除以 11 取余数,分别对应 1-9 和 x 。不用 10 的原因是校验效果不好。

大家觉得这个设计怎么样呢。
31 条回复    2022-07-21 13:57:20 +08:00
citydog

citydog      1 小时 19 分钟前

不管怎么样,也用了这么多年了,也没出啥问题,日后还将继续这样
说它好不好没啥意义吧?你还能把它改了?
cssk

cssk      1 小时 18 分钟前

不糟糕,香港的身份证号 tmd 还带括号呢
Wallace01

Wallace01      1 小时 15 分钟前   ❤️ 4

@citydog 这里不是人大,只讨论设计,不必想这么多意义。
wonderfulcxm

wonderfulcxm      1 小时 15 分钟前 via iPhone

当然不好,对输入设备有要求了,纯数字只要数字键盘
Wallace01

Wallace01      1 小时 14 分钟前

口误一处:对应 0-9 不是 1-9
v23x

v23x      1 小时 13 分钟前

的确不好.要是我肯定很抗拒这种设计.感觉不够统一
nutting

nutting      1 小时 13 分钟前 via iPhone

校验有啥用
JQSM

JQSM      1 小时 12 分钟前

@wonderfulcxm 数字键盘不止有 0-9 ,这倒不是什么问题。
Xusually

Xusually      1 小时 12 分钟前

还行吧 反正证件种类也很多,可以填写身份证的地方很多时候也可以切换证件类型填写 护照、港澳通行证、台湾通行证之类的,都有字母
Akagi201

Akagi201      1 小时 9 分钟前

同问为啥需要校验, 手机号不是也不需要校验
villivateur

villivateur      1 小时 7 分钟前

校验位是为了快速判断身份证号是否是伪造。话说当时不知道是哪个专家论证了一下,说 11 位比 10 位更安全
subpo

subpo      1 小时 5 分钟前   ❤️ 1

主要是判断有没有输入错误的 checksum ,规则都是公开的,判断不了伪造
tabris17

tabris17      1 小时 2 分钟前

之前用过某个国家级的 APP ,输入身份证是 APP 内置的数字键盘,没有 X !
没有 X !
没有 X !
kop1989smurf

kop1989smurf      1 小时 2 分钟前   ❤️ 1

@nutting #7
@Akagi201 #10
校验的意义:

身份证其他位都有明确的业务信息,前六位是位置,后面八位是出生年月,再往后是登记序号。
这也就导致但凡你稍加了解,就可以随口编造出任何地理位置,出生年月的身份证号,蒙到一个真号的概率极高。

校验位就是不让你这么方便的编造。
Akagi201

Akagi201      59 分钟前

@kop1989smurf #14 通信领域有校验位, 为了防止传输时候数据出错的. 这里自己根据算法算一下校验位没啥难度. 没啥一样. 我们平时设计 id 的时候也用不到校验位
kop1989smurf

kop1989smurf      57 分钟前

@Akagi201 #15 同意你的看法,有机器辅助的前提下当然无法防止伪造,我所谓的编造,类似是“录错”或者“张口就来”的场景。
sobigfish

sobigfish      57 分钟前

是,模除 10 不行吗?非得 11
teasick

teasick      55 分钟前   ❤️ 8

身份证号最糟糕的设计是包含了太多个人信息在里面,偏偏又很多地方要用到身份证号,相当于公开裸奔导出泄露,泄漏一个身份证号,意味着同时泄露了出生日期和出生地。
estk

estk      49 分钟前 via Android

@tabris17 #13
输入框下方备注:如果你身份证号有 X ,请在微信编辑复制,然后回来长按黏贴
jifengg

jifengg      46 分钟前

我还有一个觉得不好的地方,x 是有大小写的,有的系统不忽略大小写,会导致不匹配。
hzcer

hzcer      40 分钟前 via iPhone   ❤️ 2

因为 11 是质数,10 不是
masterclock

masterclock      38 分钟前

不好,无法理解为什么这么设计
1. 增加了一个原本不使用的符号,无法输入、甚至无法显示
2. X 是什么?很多人不认识、不会读。
3. 模 11 效果比模 10 好很多吗?如果是,还不如升 19 位
Wallace01

Wallace01      37 分钟前 via iPhone   ❤️ 1

个人觉得,不改变校验算法前提下,我宁愿用两位表示校验位,00-10 ,这样比 X 带来的影响小一些
cpstar

cpstar      18 分钟前

换个角度,你要思考为什么这么去校验,一个校验算法,到底要校验什么。目前的算法,前 17 位每一位都用不同的权,但是权不是连续上升或者下降,而是非常离散的,为什么会这样?至于 11 还是 10 ,那就是质数的问题了,那问题来了,能否模 7 ,把校验位降到 0-6 ?
why ? why ? why ?刨根问底,你就能理解这个算法,并且直接回答这个 X 到底是巧妙还是冗余了。
JNotEnoughW

JNotEnoughW      17 分钟前

@teasick 是的赞同 相比于表现形式 我也更加反感如此赤裸的内容拼接
cpstar

cpstar      16 分钟前

补充 24#,反正现在 18 位如果校验不过去,是能够直接定位哪一位错误的,而存在两位错误我就不知道了。
zqqf16

zqqf16      15 分钟前

我的最后一位就是 X ,平时用起来还好,就是有时候会遇到奇葩系统,X 竟然区分大小写……
Wallace01

Wallace01      14 分钟前 via iPhone

@teasick 以及性别
hertzry

hertzry      14 分钟前

X 不就是 10 吗?用一位表示了 11 个数,挺好的想法。
luob

luob      12 分钟前

校验位带个 X 这个设计恐怕也是 90 年代把世界各国的各种规章制度稀里糊涂乱抄一气的产物之一,不知道有没有谁能考证一下

不过它既然成功地活了下来,换了三轮身份证都没被重新设计,说明总体上还是没啥问题的
agegcn

agegcn      6 分钟前

可能两位校验更好。可以取模更大的质数

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK