先上代码

package com.lj;import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.regex.Pattern;import org.apache.commons.lang3.StringUtils;//import plugin.template.TemplateStepMeta;/*** 统一社会信用代码规则验证器* @author balizuoan**/
public class UnifiedCodeValidator {//正则校验     如果想要不区分大小写,就在最后一个数组中加入 abcsefghjklmnpqrtuwxyprivate static final String REGEX = "[1-9NY]{1}[1-9]{1}[1-6]{1}[0-9]{5}[0123456789ABCDEFGHJKLMNPQRTUWXY]{10}";private static final int[] WEIGHT = { 1, 3, 9, 27, 19, 26, 16, 17, 20, 29, 25, 13, 8, 24, 10, 30, 28 };private static final String BASE_CODE_STRING = "0123456789ABCDEFGHJKLMNPQRTUWXY";private static final char[] BASE_CODE_ARRAY = BASE_CODE_STRING.toCharArray();private static final List<Character> BASE_CODES = new ArrayList<>();/*** 登记管理部门+机构类别代码* http://www.sohu.com/a/332134717_120209852*/private static final List<String> REGIST_CODE = Arrays.asList("11", "12", "13", "19","21", "29","31", "32", "33", "34", "35", "39","41", "49","51", "52", "53", "59","61", "62", "69","71", "72", "79","81", "89","91", "92", "93","A1", "A9","N1", "N2", "N3", "N9","Y1");/*** 省级行政区划代码*/private static final List<String> PROVINCE_REGION_CODE = Arrays.asList("11", "12", "13", "14", "15", "21", "22", "23", "31", "32", "33", "34", "35", "36", "37", "41", "42", "43", "44", "45", "46","50", "51", "52", "53", "54", "61", "62", "63", "64", "65", "71", "81", "82", "91");static {for (char c : BASE_CODE_ARRAY) {BASE_CODES.add(c);}}/*** 校验方法* @param value 信用代码* @return*/public boolean CodeValidate( String value) {if (StringUtils.isEmpty(value)) {return true;}// 长度验证if (value.length() != 18) {return false;}// 登记管理部门+机构类别代码验证if (!REGIST_CODE.contains(value.substring(0, 2))) {return false;}// 省级行政区划代码验证if (!PROVINCE_REGION_CODE.contains(value.substring(2, 4))) {return false;}// 正则初验if (!Pattern.matches(REGEX, value)) {return false;}// 效验码校验char[] businessCodeArray = value.toCharArray();
//      char  check= businessCodeArray[17];String check = Character.toString(businessCodeArray[17]);int sum = 0;for (int i = 0; i < 17; i++) {char key = businessCodeArray[i];sum += (BASE_CODES.indexOf(key) * WEIGHT[i]);}int checkCode = 31 - sum % 31;String s = Character.toString(BASE_CODE_ARRAY[checkCode % 31]);//对比时将两个字符转为字符串,不区分大小写对比最后一位return s.equalsIgnoreCase(check);}
}

信用代码编码规则如下:

【统一社会信用代码=登记管理部门代码+机构类别代码+登记管理机关行政区划码+主体标识码(组织机构代码)+校验码】

第一部分(第1位):登记管理部门代码,使用阿拉伯数字或英文字母表示。例如,机构编制、民政、工商三个登记管理部门分别使用1、2、3表示,其他登记管理部门可使用相应阿拉伯数字或英文字母表示。

第二部分(第2位):机构类别代码,使用阿拉伯数字或英文字母表示。登记管理部门根据管理职能,确定在本部门登记的机构类别编码。例如,机构编制部门可用1表示机关单位,2表示事业单位,3表示由中央编办直接管理机构编制的群众团体;民政部门可用1表示社会团体,2表示民办非企业单位,3表示基金会;工商部门可用1表示企业,2表示个体工商户,3表示农民专业合作社

第三部分(第3—8位):登记管理机关行政区划码,使用阿拉伯数字表示。例如,国家用100000,北京用110000,注册登记时由系统自动生成,体现法人和其他组织注册登记及其登记管理机关所在地,既满足登记管理部门按地区管理需求,也便于社会对注册登记主体所在区域进行识别。(参照《中华人民共和国行政区划代码》[GB/T 2260—2007])

第四部分(第9—17位):主体标识码(组织机构代码),使用阿拉伯数字或英文字母表示。(参照《全国组织机构代码编制规则》[GB 11714—1997])

第五部分(第18位):校验码,使用阿拉伯数字或英文字母表示。

Java代码验证社会统一信用代码规则相关推荐

  1. Python 生成、识别社会统一信用代码

    三证合一之后,社会统一信用代码就是企业的身份证.也就是说只要你的程序涉及企业信息的录入,那就少不了社会统一信用代码的录入.这里分享一个工具,可以用 Python 来识别社会统一信用代码,也可以随机生成 ...

  2. java 社会统一信用代码分解,获取登记管理部门代码、机构类别代码、登记管理机关行政区划码、 主体标识码、校验码

    问题描述: `提示:根据已有的社会统一信用编码,获取每个组成部分的内容 学习内容: 提示:这里需要说明一下,统一社会信用代码的构成 社会统一信用代码是由18位 阿拉伯数字或大写英文字母(不使用I.O. ...

  3. java 组织机构代码_JAVA实现社会统一信用代码校验的方法|chu

    网上找了几个,写的都不太适合,有的写出来了,也没有给出参考的算法链接.这样就导致了如果产生错误我们无法排查(不懂原理怎么排查对吧). 如果在使用过程中有疑虑,请参考:较验规则 package com. ...

  4. Js中身份证验证及社会统一信用代码验证

    二代身份证验证规则如下: //函数参数必须是字符串,因为二代身份证号码是十八位,而在javascript中,十八位的数值会超出计算范围,造成不精确的结果,导致最后两位和计算的值不一致,从而该函数出现错 ...

  5. java 组织机构代码_JAVA实现社会统一信用代码较验

    网上找了几个,写的都不太适合,有的写出来了,也没有给出参考的算法链接.这样就导致了如果产生错误我们无法排查(不懂原理怎么排查对吧). 如果在使用过程中有疑虑,请参考:较验规则 代码实现 package ...

  6. java 组织机构代码_JAVA实现社会统一信用代码校验的方法

    网上找了几个,写的都不太适合,有的写出来了,也没有给出参考的算法链接.这样就导致了如果产生错误我们无法排查(不懂原理怎么排查对吧). 如果在使用过程中有疑虑,请参考:较验规则 package com. ...

  7. oracle校验社会统一信用代码(菜J笔记)

    今天下午花了一下午时间,查了很久百度,写了一个很菜的东西 如果有什么问题,欢迎各位大佬指出,直接上代码 统一社会信用代码编码规则-维基百科 身份证号码的编码规则及校验-简书 国家企业信用信息公示查询系 ...

  8. 手机号,身份证号,邮政编码,统一信用代码,发票抬头,纳税人识别号正则校验

    手机号 phone(rule, value, callback) {const reg = /^[1][3,4,5,6.7,8,9][0-9]{9}$/if (!reg.test(value)) {c ...

  9. PHP验证统一信用代码

    <?php /*** 判断是否为统一社会信用代码*/ function isCompanyCode($str){$one = '159Y';//第一位可以出现的字符$two = '12391'; ...

  10. 统一信用代码n开头_股票代码查询怎么查,通过板块查找股票

    股票代码怎么查询? 股票查询能够在任意行情软件中查找,在输入股票号那栏中输入要查找个股的名字的首字母就可以了,行情软件查找都是输入首字母即可.下列为股票号的归类: 股票代码怎么查询? 股票查询能够在任 ...

最新文章

  1. vim 配置文件 C/C++
  2. 我的世界java版袭击图片_我的世界:你mc“中毒”有多深?这8张图都能看懂,绝对是真爱粉...
  3. android6.0源码分析之Camera2 HAL分析
  4. 《ASCE1885的源码分析》の基于完成端口模型的TCP服务器框架
  5. mysql数据结构参考书籍_mysql数据结构相关
  6. #1097 : 最小生成树一·Prim算法
  7. Flume整合SparkStreaming出现UnsupportedClassVersionError: org/apache/spark/streaming/flume/sink/SparkFlum
  8. 前端学习(3026):vue+element今日头条管理-调整外观
  9. msp430项目编程14
  10. typedef函数用法
  11. postgreSQL源码分析——索引的建立与使用——GIN索引(1)
  12. js赋值时特殊字符完美处理方案
  13. python元素定位_Python自动化中的元素定位(一)
  14. 遗传算法原理与应用详解
  15. Ubuntu 环境下SVN添加新项目
  16. dialog第三方框架,material-dialogs的使用
  17. 有道云笔记快捷键大全+修改
  18. C高级第二次PTA作业
  19. html-canvas-绘制简单线条
  20. 中奖人js滚动效果_jQuery实现中奖播报功能(让文本滚动起来) 简单设置数值即可...

热门文章

  1. 【小程序】快来开发你的第一个微信小游戏(详细流程)
  2. 孔明锁三通步骤_32根鲁班锁拼装步骤
  3. linux中命令du -sm,linux中du命令参数的用法详解
  4. 错误 LNK1104 无法打开文件“C:\Users\Administrator\Desktop\新建文件夹\ConsoleApplication1\x64\Debug\ConsoleApplicat
  5. NTSC、PAL、SECAM三大制式简介
  6. 如何用PPT制作一份可视化数据图表?
  7. 2021英一Text4精读、背景和语法分析(网络中立是生是死?难下定论)
  8. 视频本地化之 AE 处理流程
  9. 博客网页设计制作 简单静态HTML网页作品 DIV CSS个人网页作业成品 dreamweaver学生个人博客网站模板
  10. 前端实时可视化开发工具