前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >第二代身份证 验证

第二代身份证 验证

作者头像
全栈程序员站长
发布于 2022-09-14 06:43:17
发布于 2022-09-14 06:43:17
97600
代码可运行
举报
运行总次数:0
代码可运行

大家好,又见面了,我是你们的朋友全栈君。

今天,在盛大某网站注册的时候,身份证必填,但我又不想填真实身份证号码,于是随便编了串自认为合法的身份证号码,但是却马上被提示号码错误,由于响应速度极快,可以肯定不是联机校验正确性的,那也就是说第二代身份证除了大家都知道的几位表示生日和性别的规则以外,还有另外的自我校验规则。于是翻开页面源码查看,发现这段js没有被压缩,所以规则也很好懂。 就在这里给大家科普下,不知道是不是火星了,呵呵。 以下代码来自 这里,版权归盛大。当然,你也可以在 维基百科找到更详细的介绍和算法。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
iW = new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1);
iSum = 0;
for( i=0;i<17;i++){
    iC = v_card.charAt(i) ;
    iVal = parseInt(iC);
    iSum += iVal * iW[i];
}
iJYM = iSum % 11;
var sJYM = '';
if(iJYM == 0) sJYM = "1";
else if(iJYM == 1 ) sJYM = "0";
else if(iJYM == 2 ) sJYM = "x";
else if(iJYM == 3 ) sJYM = "9";
else if(iJYM == 4 ) sJYM = "8";
else if(iJYM == 5 ) sJYM = "7";
else if(iJYM == 6 ) sJYM = "6";
else if(iJYM == 7 ) sJYM = "5";
else if(iJYM == 8 ) sJYM = "4";
else if(iJYM == 9) sJYM = "3";
else if(iJYM == 10) sJYM = "2";
var cCheck = v_card.charAt(17).toLowerCase();
if( cCheck != sJYM ){
    return false; //对不上就是假号码
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
文章链接:http://luy.li/2011/01/01/sfzhm/

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/153637.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【转】Go语言---strings包(字符串操作)
字符串求长度 求子串 是否存在某个字符或者子串 子串出现的次数(字符串匹配) 字符串分割(切分)成[]string 字符串是否存在某个前缀或后缀 字符或者子串在字符串中首次出现的位置或最后一次出现的位置 通过某个字符串将[]string进行拼接 字符串重复次数 字符串中子串替换 大小写转换 ......................等等一些基本操作。 由于string类型可以看成是一种特殊的slice类型,因此获取长度可以用内置的函数len;同时支持 切片 操作,因此,子串获取很容易。
yiduwangkai
2019/09/17
9920
Go语言字符串基础
1.字符串是由一串Unicode字符组成的序列,每个Unicode字符都占用一个或多个字节的存储空间。
周小末天天开心
2023/10/16
1820
Go基础——字符串
字符串结构由两个信息组成:第一个是字符串指向的底层字节数组,第二个是字符串的字节的长度。字符串其实是一个结构体,因此字符串的赋值操作也就是reflect.StringHeader结构体的复制过程,并不会涉及底层字节数组的复制。在前面数组一节提到的[2]string字符串数组对应的底层结构和[2]reflect.StringHeader对应的底层结构是一样的,可以将字符串数组看作一个结构体数组。 我们可以看看字符串“Hello, world”本身对应的内存结构:
羊羽shine
2019/05/28
5340
go 语言string之解析
string 在go中如何定义的? string 的底层原理与细节? string 如何具体使用?
Tim在路上
2021/02/04
6240
Go语言中的字符串
Go语言中的字符串也可以使用比较操作符 <, <=, ==, !=, >, >=。具体比较方法是将字符串转化成的字节数组中的字节逐一比较。
宅蓝三木
2024/10/09
850
Go 开发常用操作技巧--字符串
Go 语言字符串的字节使用的是UTF-8编码,是一种变长的编码方式。使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。
微客鸟窝
2023/01/09
4480
Go 开发常用操作技巧--字符串
Golang 分割字符串
在开发过程中,很多时候我们有分割字符串的需求,即把一个字符串按照某种分割符进行切割。
恋喵大鲤鱼
2023/03/08
2.9K0
Golang语言社区--标准库strings包讲解
大家好,我是Golang语言社区主编彬哥,本篇文章是给大家转载关于标准库strings包的知识。
李海彬
2018/03/13
2.2K0
Golang语言社区--标准库strings包讲解
Go 字符串操作
要修改字符串,可先将其转换成 []rune 或 []byte,完成后再转换为 string。无论哪种转换,都会重新分配内存,并复制字节数组。
看、未来
2022/06/19
3930
Go 字符串操作
Go字符串 【Go语言圣经笔记】
一个字符串是一个不可改变的字节序列(笔者注:修改一个字符串会产生新的字符串)。字符串可以包含任意的数据,包括byte值0,但是通常是用来包含人类可读的文本。文本字符串通常被解释为采用UTF8编码的Unicode码点(rune)序列,我们稍后会详细讨论这个问题。
Steve Wang
2021/12/06
4150
Go语言编程中字符串切割方法小结
1.func Fields(s string) []string,这个函数的作用是按照1:n个空格来分割字符串最后返回的是 []string的切片 import ( "fmt" "strings" ) func main() { fmt.Println(strings.Fields("hello widuu golang")) //out [hello widuu golang] } 2.func FieldsFunc(s string, f func(rune) bool) []string一看
李海彬
2018/03/20
2.5K0
golang之旅--数据类型之字符串
背景 学习go已经有很长一段时间了,对于它的数据类型还没有更加深入的了解,这里做一下对数据类型的总结,第一篇是字符串的介绍。 golang中的字符串 func stringDemo() { str := "李阳" //len函数返回的是字节长度 fmt.Println(len(str)) //utf8的RuneCountInString判断的是ASCII长度 fmt.Println(utf8.RuneCountInString(str)) } 字符串
李海彬
2018/03/27
1.4K0
转--Go语言常用字符串处理方法实例汇总
package main import ( "fmt" "strings" //"unicode/utf8" ) func main() { fmt.Println("查找子串是否在指定的字符串中") fmt.Println(" Contains 函数的用法") fmt.Println(strings.Contains("seafood", "foo")) //true fmt.Println(strings.Contains("seafood", "
李海彬
2018/03/20
7670
Golang语言情怀-第45期 Go 语言标准库翻译 bytes
bytes包实现了操作[]byte的常用函数。本包的函数和strings包的函数相当类似。
李海彬
2021/03/09
3740
Go字符串
字符串 字符集用来做什么 字符集是为每个字符分配一个唯一的ID 在同一个字符集内,字符的ID是唯一的,不同字符集ID可能是不同的 UTF-8是编码规则或者说是Unicode的一种实现 UTF-8将Unicode中的字符ID以某种方式进行编码 变长的编码规则: 1-4字节,具体规则: 0xxxx表示0~127代表ascii Go语言中的字符串内部实现编码是UTF-8的,默认是rune类型 字符串是什么? 定义字符串 双引号和反引号 golang中单引号,双引号代表的含义 var ch = 'a' 代表ut
Wyc
2023/02/27
3060
Go 字符串处理
因为字符串类型在Go中是不可改变的,因此每次操作实际都要新分配字符串,所以在字符串比较多的时候效率不高。
孤烟
2020/09/27
7730
Go标准库:bytes
Go 语言的标准库 bytes 包提供了一组用于操作字节切片 ([]byte) 的函数。这个包中的函数与 strings 包中的函数非常类似,但它们操作的是字节切片,而不是字符串。字节切片在 Go 语言中是一种非常重要的数据类型,广泛用于处理二进制数据和文本数据。bytes 包提供了很多处理字节切片的工具,包括但不限于查找、比较、切分、连接、替换、转换等操作。
孟斯特
2024/08/09
1150
Go标准库:bytes
go语言strings库总结
20 Mar 2016 go语言strings库总结 最近由于用go做字符串处理,用到了go的strings库,借此对go strings库做个总结,将go strings中所有函数的功能做一个简单的说明,当然,这是一个重复造轮子的过程,因为go语言标准库已经有中文版了。 详见:https://studygolang.com/pkgdoc 所以写本文主要有以下2个目的,其一,熟悉编程语言字符串处理方法。大多数语言的字符串处理库提供的函数都大同小异,且越高级的
俊采
2018/05/15
6350
区块链开发之Go语言—IO操作
本篇文章是对区块链开发中的Go语言中常用的io操作的库做一个梳理 io,最基本的io Reader type Reader interface { Read(p []byte) (n int, err error) } 实现了Reader接口的都可以用read方法,将数据读入到p字节数组,n表示读取了几个字节,err返回错误。 如果读到了文件尾EOF,则err返回EOF。 注意,当文件最后一小段已经无法填满p这个字节数组时,不会产生EOF的错误,只会在下一次读取时产生n=0,err=io.EOF的错
linxinzhe
2018/04/10
1.1K0
golang学习笔记5:字符串及相关函数
字符串是 UTF-8 字符的一个序列(当字符为 ASCII 码时则占用 1 个字节,其它字符根据需要占用 2-4 个字节)。UTF-8 是被广泛使用的编码格式,是文本文件的标准编码,其它包括 XML 和 JSON 在内,也都使用该编码。由于该编码对占用字节长度的不定性,Go 中的字符串也可能根据需要占用 1 至 4 个字节,这与其它语言如 C++、Java 或者 Python 不同(Java 始终使用 2 个字节)。Go 这样做的好处是不仅减少了内存和硬盘空间占用,同时也不用像其它语言那样需要对使用 UTF-8 字符集的文本进行编码和解码。 字符串是一种值类型,且值不可变,即创建某个文本后你无法再次修改这个文本的内容;更深入地讲,字符串是字节的定长数组。 Go 支持以下 2 种形式的字面值:
JKXQJ
2018/10/22
1.3K0
相关推荐
【转】Go语言---strings包(字符串操作)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验