用Python 实现统一社会信用代码后端校验

网上看到有一篇用JS实现的18位社会统一信用代码校验的文章效果非常不错,但是它不便于做后端校验,我个人写的Django项目需要做后端社会统一信用代码后端校验,就小小的复现了一下。

前言:

本代码适用于GB32100—2015《法人和其他组织统一社会信用代码编码规则》标准规定的统一社会信用代码。编码由18位阿拉伯数字或大写英文字母表示,分别是1位登记管理部门代码、1位机构类别代码、6位登记管理机关行政区划码、9位主体标识码、1位校验码。

源码:

import redef verifySocietyCode(code):"""校验社会统一社会信用代码"""pattern_code = re.compile('^[0-9A-Z]+$')# 先校验长度是否满足要求if len(code) != 18 or len(pattern_code.findall(code)) == 0:return False# 长度满足要求else:total = 0words = '0123456789ABCDEFGHJKLMNPQRTUWXY'weights = [1, 3, 9, 27, 19, 26, 16, 17, 20, 29, 25, 13, 8, 24, 10, 30, 28]# 遍历计算total值for i in range(0, len(code) - 1):# 取出对应位置的字串sub_string = code[i:i + 1]# 找到该字串第一次出现的位置sub_string_index = words.find(sub_string)# 计算权重与加权因子之和total = total + sub_string_index * weights[i]# 进行逻辑校验logic_check_code = 31 - (total % 31)if logic_check_code == 31:logic_check_code = 0char_ls = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K','L', 'M', 'N', 'P', 'Q', 'R', 'T', 'U', 'W', 'X', 'Y']logic_check_code = char_ls[logic_check_code]check_code = code[17:18]if logic_check_code != check_code:print("不是有效的统一社会信用编码!")return Falseelse:print("是有效的统一社会信用编码!")return True

校验结果验证:

if __name__ == "__main__":for c in ['92330783MA29QJ0F5X', '92450303MA5MXE8R6J', '92520626MA6GJ0T945', '92411625MA44MN57X7','92220104MA14XX328N', '91350582M00013D31G', '622323199512052058']:ans = verifySocietyCode(c)print(ans, '\n')

Over:

有问题欢迎留言讨论。

Python 后端统一社会信用代码校验相关推荐

  1. Python实现统一社会信用代码校验(GB32100-2015)

    Python实现统一社会信用代码校验 统一社会信用代码国标校验 统一社会信用代码国标校验规则 示例说明 Python代码实现(仅实现GB- 32100-2015中的规则) 统一社会信用代码国标校验   ...

  2. Python实现统一社会信用代码合法性校验

    Python实现统一社会信用代码合法性校验 1 统一代码的构成 1.1 结构 ​ 统一代码由十八位的阿拉伯数字或大写英文字母(不使用I.O.Z.S.V)组成,包括第1位登记管理部门代码.第2位机构类别 ...

  3. 组织机构代码和统一社会信用代码校验规则以及java校验工具类

    组织机构代码 编码规则编辑 1.全国组织机构代码由八位数字(或大写拉丁字母)本体代码和一位数字(或大写拉丁字母)校验码组成. 本体代码采用系列(即分区段)顺序编码方法. 校验码按照以下公式计算: C9 ...

  4. 全网唯一正确身份证和社统一社会信用代码自定义表单校验器(身份证校验和社统一社会信用代码校验)

    话不多说,直入正题: 1.工具类: import * as moment from 'moment'; import {isUndefined} from 'util'; import {Abstra ...

  5. JAVA 身份证校验与统一社会信用代码校验

    B话少说,上代码 原理默认大家都懂了,不懂的话可以百度一下 package com.microlinktech.rns.util;import lombok.Getter; import lombok ...

  6. 实现统一社会信用代码校验

    社会信用代码:由18位数字和大写的字母组成,第1位是登记管理部门代码,第2位是机构类别代码,第3~8位登记管理机关行政区划码,第9~17位主休标识码,第18位校验码.有五个部分组成. 具体详情请点击: ...

  7. hive自定义函数实现组织机构代码、统一社会信用代码校验

    一.根据中华人民共和国国家标准全国组织机构代码(9位)编制规则实现规则校验 1.组织机构代码编码规则 1.1组织机构代码的组成 全国组织机构代码由八位数字(或大写拉丁字母)本体代码和一位数字(或大写拉 ...

  8. 身份证号码及统一社会信用代码校验

    /** * 身份证号码验证 * rule为form表单当前验证的filed对应的验证rule规则 * value为当前输入框返回值 * callback为回调函数,验证成功直接回调,验证失败回调函数返 ...

  9. 全国组织机构统一社会信用代码校验 - Java 版

    主要是网上错误的代码太多,为了避免大家踩坑,特此更正,详细规则如下: GB 32100-2015 法人和其他组织统一社会信用代码编码规则 private static final String BAS ...

  10. 使用Java校验【统一社会信用代码】真假

    统一社会信用代码校验规则: 定义一个方法判断统一社会信用代码真假: /*** 验证机构代码真假** @param orgCode 组织机构信用代码* @return 真返回true 假返回false* ...

最新文章

  1. Go 学习笔记(59)— Go 第三方库之 etcd/clientv3 封装为方法使用(建立连接、设置key-value、获取key-value、获取带前缀的key-value)
  2. C++:随笔9----模板/内联函数/容器
  3. android 读取内部存储文件格式,Android中的数据储存之文件存储
  4. 用C语言解“支票问题”题
  5. 竹子博客Linux,linux学习--美化自己的centos7
  6. 【转】提示框第三方库之MBProgressHUD iOS toast效果 动态提示框效果
  7. 【AtCoder】ARC088
  8. visual studio创建项目时需要注意的问题
  9. Docker搭建便捷的开发者环境
  10. 一般向量空间的基变换_MIT—线性代数笔记30 线性变换及对应矩阵
  11. 渗透测试web安全 - webshell 免杀 绕过waf总结
  12. 大牛直播SDK: 如何实现简单粗暴靠谱的直播抓娃娃方案
  13. 应用ImageJ对荧光图片进行半定量分析
  14. System.InvalidOperationException:“在应用程序配置文件中找不到名为“LDOAEntities”的连接字符串。”
  15. el-input-number中添加suffix
  16. 联通光猫TEWA-800E设置桥接模式
  17. Java——26个字母
  18. yolov3--25--Detectron目标检测可视化-P-R曲线绘制-Recall-TP-FP-FN等评价指标
  19. 百度网盘提速法,不用插件,不用安装脚本
  20. 综合评价方法(一)------基础知识

热门文章

  1. PTA三天打渔、两天晒网 - 简单的循环程序
  2. 【回归预测-PNN分类】基于粒子群算法群优化概率神经网络算法实现空气质量评价预测附matlab代码
  3. cs1.5小地图如何加机器人 电脑人 POD2.5
  4. 知网计算机论文查重查代码,知网查重会查代码么?
  5. [spfa][数论]JZOJ 4722 跳楼机
  6. TM7705(AD7705)驱动调试总结-基于stm32f103zet6-填坑日记
  7. 产品经理职责技能和所需证书
  8. PIC单片机c语言休眠,PIC16F72 休眠程序
  9. 单片机实例11—— 00-59秒计时器(利用软件延时)(硬件电路图+汇编程序+C语言程序)
  10. 深度学习Course4第三周Detection Algorithms习题整理