开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 2425|回复: 13
收起左侧

[Web源码] sfz最后一位生成算法

[复制链接]
结帖率:100% (2/2)
发表于 2023-5-29 21:20:08 | 显示全部楼层 |阅读模式   广东省东莞市
分享源码
界面截图: -
是否带模块: -
备注说明: -
众所周知,sfz最后一位是校验位,随便编的sfz最后一位不对的话无法通过校验,这里用js算法生成
参考自:Python3身份证校验
将其算法改为js算法

[JavaScript] 纯文本查看 复制代码
function checkS(s_id){
    const c_list = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
    const s_c_list = ["1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2"];

    let s_sum = 0;
    for (let index = 0; index < 17; index++) {
    const i = s_id[index];
    s_sum += parseInt(i) * c_list[index];
    }

    const c_mod = s_sum % 11;
    const result = s_id.slice(0, 17) + s_c_list[c_mod];
    return result
}

checkS("411123199704159544")
'411123199704159545'
checkS("411121199503159544")
'411121199503159546'
checkS("411121199503159540")
'411121199503159546'
checkS("411121199503159548")
'411121199503159546'


可以看到 调用checkS时,不管sfz最后一位输入什么 都是返回正确的数字,不信的可以拿你自己sfz试一下

结帖率:50% (1/2)

签到天数: 4 天

发表于 2023-6-22 10:24:29 | 显示全部楼层   四川省泸州市
感谢分享,十分有用
回复 支持 反对

使用道具 举报

签到天数: 9 天

发表于 2023-6-11 23:48:39 | 显示全部楼层   广东省茂名市
支持一下
回复 支持 反对

使用道具 举报

结帖率:0% (0/3)

签到天数: 3 天

发表于 2023-6-5 18:39:10 | 显示全部楼层   四川省广元市
支持一下下
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)

签到天数: 10 天

发表于 2023-6-2 23:27:20 | 显示全部楼层   浙江省杭州市
11111111111111111111111111111111
回复 支持 反对

使用道具 举报

结帖率:83% (15/18)

签到天数: 1 天

发表于 2023-6-2 17:09:45 | 显示全部楼层   甘肃省天水市
mod11-2算法
回复 支持 反对

使用道具 举报

发表于 2023-5-31 10:28:54 | 显示全部楼层   广东省揭阳市
感谢分享
回复 支持 反对

使用道具 举报

结帖率:100% (2/2)

签到天数: 12 天

发表于 2023-5-30 17:35:42 | 显示全部楼层   广东省深圳市
学习一下
回复 支持 反对

使用道具 举报

发表于 2023-5-30 15:02:18 | 显示全部楼层   河北省石家庄市
[PHP] 纯文本查看 复制代码
<?php
function checkS($s_id) {
    $c_list = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
    $s_c_list = array("1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2");
 
    $s_sum = 0;
    for ($index = 0; $index < 17; $index++) {
        $i = $s_id[$index];
        $s_sum += intval($i) * $c_list[$index];
    }
 
    $c_mod = $s_sum % 11;
    $result = substr($s_id, 0, 17) . $s_c_list[$c_mod];
    return $result;
}

$s_id = "110101199003075834";
$result = checkS($s_id);
echo $result;
?>
回复 支持 1 反对 0

使用道具 举报

发表于 2023-5-30 11:25:49 | 显示全部楼层   福建省厦门市
有没有大神改成php的
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表