目录

  • java版
  • javascript版

java版

import java.util.HashMap;
import java.util.Map;public class CompanySocialUtil {private static final int[] orgCodeWeight = {3, 7, 9, 10, 5, 8, 4, 2};private static final int[] socialIdWeight = {1, 3, 9, 27, 19, 26, 16, 17, 20, 29, 25, 13, 8, 24, 10, 30, 28};private static final Map<String, Integer> socialIdIndex = new HashMap<String, Integer>();private static final String[] socialBasic = {"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"};static {for (int i = 0; i < socialBasic.length; i++) {socialIdIndex.put(socialBasic[i], i);}}/*** 校验统一社会信用代码* @param str 统一社会信用代码* @return true 校验通过,else false*/public static boolean checkCompanySocialId(String str) {if (str == null || str.length() != 18) {return false;}return str.equals(createCompanySocialId(str));}/*** 生成统一社会信用代码* @param str 至少统一社会信用代码前16位* @return 18位统一社会信用代码  if str足16位且符合规则, else 空字符串*/public static String createCompanySocialId(String str) {if (str == null || str.length() < 16) {return "";}String socialCode = str.substring(0, 16);if (!socialCode.matches("^(?:11|12|13|19|51|52|53|59|91|92|93|Y1)\\d{6}[\\dA-Z^IOZSV]{8}$")) {return "";}String orgCode = socialCode.substring(8, 16);int orgCheckCode = 0;String orgCheckCodeStr = "";for (int i = 0, len = orgCode.length(); i < len; i++) {orgCheckCode += Integer.parseInt(orgCode.substring(i, i + 1), 36) * orgCodeWeight[i];}orgCheckCode = 11 - orgCheckCode % 11;if (orgCheckCode == 11) {orgCheckCodeStr = "0";} else if (orgCheckCode == 10) {orgCheckCodeStr = "X";} else {orgCheckCodeStr = orgCheckCode + "";}socialCode += orgCheckCodeStr;int socialCheckCode = 0;for (int i = 0, len = socialCode.length(); i < len; i++) {socialCheckCode += socialIdIndex.get(socialCode.substring(i, i + 1)) * socialIdWeight[i];}socialCheckCode = 31 - socialCheckCode % 31;String socialCheckCodeStr = socialBasic[socialCheckCode % 31];socialCode += socialCheckCodeStr;return socialCode;}}

javascript版

(function(window) {/*** 生成统一社会信用代码* @param str 至少统一社会信用代码前16位* @return 18位统一社会信用代码  if str足16位且符合规则, else 空字符串*/window.createCompanySocialId = function (str) {if (!str || str.length < 16) {return '';}return new _CompanySocialId()._createCompanySocialId(str);};/*** 校验统一社会信用代码* @param str 统一社会信用代码* @return true 校验通过,else false*/window.checkCompanySocialId = function (str) {if (!str || str.length !== 18) {return false}return new _CompanySocialId()._createCompanySocialId(str.substr(0, 16)) === str;};function _CompanySocialId() {this._orgCode = null;this._socialCode = null;}_CompanySocialId.prototype._createCompanySocialId = function (str) {if (!str || str.length < 16) {return '';}str = str.substr(0, 16);if (!/^(?:11|12|13|19|51|52|53|59|91|92|93|Y1)\d{6}[\dA-Z^IOZSV]{8}$/.test(str)) {return '';}var arr = str.split('');var thisSocialId = this;var orgCode = arr.slice(8, 16);thisSocialId._socialCode = arr.slice();var orgCheckCode = 0;for (var i = 0; i < orgCode.length; i++) {orgCheckCode += window.parseInt(orgCode[i], 36) * thisSocialId._orgCodeWeight[i];}orgCheckCode = 11 - orgCheckCode % 11;if (orgCheckCode === 11) {orgCheckCode = '0';} else if (orgCheckCode === 10) {orgCheckCode = 'X';} else {orgCheckCode = orgCheckCode + '';}thisSocialId._socialCode.push(orgCheckCode);var socialCheckCode = 0;for (var i = 0; i < thisSocialId._socialCode.length; i++) {socialCheckCode += thisSocialId._socialIdIndex[thisSocialId._socialCode[i]] * thisSocialId._socialIdWeight[i];}socialCheckCode = 31 - socialCheckCode % 31;socialCheckCode = thisSocialId._socialIdBasic[socialCheckCode % 31];thisSocialId._socialCode.push(socialCheckCode.toUpperCase());return thisSocialId._socialCode.join('');};_CompanySocialId.prototype._orgCodeWeight = [3, 7, 9, 10, 5, 8, 4, 2];_CompanySocialId.prototype._socialIdWeight = [1, 3, 9, 27, 19, 26, 16, 17, 20, 29, 25, 13, 8, 24, 10, 30, 28];_CompanySocialId.prototype._socialIdIndex = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9, 'A' : 10, 'B': 11, 'C': 12, 'D': 13, 'E': 14, 'F': 15, 'G': 16, 'H': 17, 'J': 18, 'K': 19, 'L': 20, 'M': 21, 'N': 22, 'P': 23, 'Q': 24, 'R': 25, 'T': 26, 'U': 27, 'W': 28, 'X': 29, 'Y': 30};_CompanySocialId.prototype._socialIdBasic = ['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'];})(window);

统一社会信用代码校验和生成相关推荐

  1. Python通过前16位生成统一社会信用代码

    # -*- coding: utf-8 -*- # 统一社会信用代码中不使用I,O,Z,S,V SOCIAL_CREDIT_CHECK_CODE_DICT = {'0': 0, '1': 1, '2' ...

  2. Python随机生成企业及统一社会信用代码

    import random import string# 随机生成企业名称 def generate_company_name():prefix = ['ABC', 'XYZ', 'ACME', 'B ...

  3. python结合正则表达式及校验码生成算法校验:电话号码、营业执照、组织机构代码证、税务登记证、统一社会信用代码证、非盈利性企业登记证号码的函数

    #!/usr/bin/env python3 import re from datetime import datetimedef check_phone(phone):'''三大运营商和虚拟运营商的 ...

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

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

  5. JAVA生成统一社会信用代码和组织机构代码

    统一社会信用代码规则如下: 代码如下: 引入jar包下载:https://mvnrepository.com/artifact/cn.hutool/hutool-all/5.8.3 package c ...

  6. 统一社会信用代码的编码格式以及js正则校验

    统一社会信用代码 统一社会信用代码正则:/^[0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10}$/ // 返回值为true或false functio ...

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

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

  8. 模拟统一社会信用代码(符合规范) python

    统一社会信用代码规则: https://zh.wikisource.org/zh-hans/GB_32100-2015_%E6%B3%95%E4%BA%BA%E5%92%8C%E5%85%B6%E4% ...

  9. 统一社会信用代码测试_统一的测试运行器和测试分析

    统一社会信用代码测试 Hi, I'm Yan and for the past two years I've been a Toolsmith at Unity. We have grown quit ...

  10. 统一社会信用代码 正则验证

    统一社会信用代码C#正则验证 [1-9A-GY]{1}[1239]{1}[1-5]{1}[0-9]{5}[0-9A-Z]{10} 转载于:https://www.cnblogs.com/Qos8/p/ ...

最新文章

  1. oracle 时间减去一个月_一文看懂教孩子时间问题的进阶过程
  2. checked_delete问题: Beyond the C++ STL: an introduction to boostdeleter::do_it
  3. MySQL的错误:No query specified
  4. linux内核调试器ftrace使用
  5. 关于链表逆置的递归和迭代方法
  6. nexus的下载与安装和启动
  7. 优秀架构师必须具备的架构思维(自顶向下和自底向上架构设计思维)
  8. 免杀神器-virtest定位特征码
  9. Oracle | awr报告分析
  10. [算法课]算法课全题目解答及各周链接
  11. dsg_20 kibana
  12. 堆Heap块Chunk
  13. java程序报stream has already been operated upon or closed异常错误解决方案
  14. 机器学习的L1、L2损失函数
  15. 软文营销保持好奇心才能吸引读者采取行动
  16. c++对8位灰度图进行二值化处理
  17. Learning Photoshop Elements 15 Photoshop Elements 15教程 Lynda课程中文字幕
  18. win7网络发现启用后找不到网络计算机,win7启用网络发现怎么又关闭了怎么解决...
  19. 干货来了,这些物联网基础知识你了解吗
  20. 深度解读 | VR中的See-Through技术

热门文章

  1. pygame写简单推箱子游戏
  2. 项目管理的10个经典故事
  3. 关于候鸟捕杀——人类愚蠢之至
  4. u盘第一扇区 分区表_硬盘主引导扇区、分区表和分区引导扇区(MBR、DPT、DBR、BPB)详解...
  5. 《如何阅读一本书》读后
  6. IDC发布2021年中国云计算10大预测;Docker 桌面为 M1 推出技术预览版
  7. 为村上隆直播做同传的火山翻译:成立仅3年,拿下5项世界冠军
  8. javaweb之统计网站访问量小案例
  9. Error response from daemon: conflict: unable to delete feb5d9fea6a5 (must be forced)
  10. 惠普笔记本电脑重装系统后找不到引导设备