统一社会信用代码规则如下:
代码如下:

引入jar包下载:https://mvnrepository.com/artifact/cn.hutool/hutool-all/5.8.3

package com.xxx;import cn.hutool.core.lang.PatternPool;
import cn.hutool.core.util.RandomUtil;
import cn.hutool.core.util.ReUtil;
import cn.hutool.core.util.StrUtil;import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.regex.Pattern;public class CreditCodeUtil {public static final Pattern CREDIT_CODE_PATTERN = PatternPool.CREDIT_CODE;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 char[] BASE_CODE_ARRAY = "0123456789ABCDEFGHJKLMNPQRTUWXY".toCharArray();private static final Map<Character, Integer> CODE_INDEX_MAP;static {CODE_INDEX_MAP = new ConcurrentHashMap<>();for (int i = 0; i < BASE_CODE_ARRAY.length; i++) {CODE_INDEX_MAP.put(BASE_CODE_ARRAY[i], i);}}/*** 正则校验统一社会信用代码(18位)** <pre>* 第一部分:登记管理部门代码1位 (数字或大写英文字母)* 第二部分:机构类别代码1位 (数字或大写英文字母)* 第三部分:登记管理机关行政区划码6位 (数字)* 第四部分:主体标识码(组织机构代码)9位 (数字或大写英文字母)* 第五部分:校验码1位 (数字或大写英文字母)* </pre>** @param creditCode 统一社会信用代码* @return 校验结果*/public static boolean isCreditCodeSimple(CharSequence creditCode) {if (StrUtil.isBlank(creditCode)) {return false;}return ReUtil.isMatch(CREDIT_CODE_PATTERN, creditCode);}/*** 是否是有效的统一社会信用代码* <pre>* 第一部分:登记管理部门代码1位 (数字或大写英文字母)* 第二部分:机构类别代码1位 (数字或大写英文字母)* 第三部分:登记管理机关行政区划码6位 (数字)* 第四部分:主体标识码(组织机构代码)9位 (数字或大写英文字母)* 第五部分:校验码1位 (数字或大写英文字母)* </pre>** @param creditCode 统一社会信用代码* @return 校验结果*/public static boolean isCreditCode(CharSequence creditCode) {if (false == isCreditCodeSimple(creditCode)) {return false;}final int parityBit = getParityBit(creditCode);if (parityBit < 0) {return false;}return creditCode.charAt(17) == BASE_CODE_ARRAY[parityBit];}/*** 获取一个随机的统一社会信用代码** @return 统一社会信用代码*/public static String randomCreditCode() {final StringBuilder buf = new StringBuilder(18);//for (int i = 0; i < 2; i++) {int num = RandomUtil.randomInt(BASE_CODE_ARRAY.length - 1);buf.append(Character.toUpperCase(BASE_CODE_ARRAY[num]));}for (int i = 2; i < 8; i++) {int num = RandomUtil.randomInt(10);buf.append(BASE_CODE_ARRAY[num]);}for (int i = 8; i < 17; i++) {int num = RandomUtil.randomInt(BASE_CODE_ARRAY.length - 1);buf.append(BASE_CODE_ARRAY[num]);}final String code = buf.toString();return code + BASE_CODE_ARRAY[getParityBit(code)];}/*** 获取校验码** @param creditCode 统一社会信息代码* @return 获取较验位的值*/private static int getParityBit(CharSequence creditCode) {int sum = 0;Integer codeIndex;for (int i = 0; i < 17; i++) {codeIndex = CODE_INDEX_MAP.get(creditCode.charAt(i));if (null == codeIndex) {return -1;}sum += codeIndex * WEIGHT[i];}final int result = 31 - sum % 31;return result == 31 ? 0 : result;}public static void main(String[] args) {for (int i = 0; i < 50; i++) {String res = randomCreditCode();System.out.println("统一社会信用代码:"+res+"  组织机构代码:"+res.substring(8,17));}}
}

效果图:

JAVA生成统一社会信用代码和组织机构代码相关推荐

  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. 组织机构代码和统一社会信用代码校验规则以及java校验工具类

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

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

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

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

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

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

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

  7. java、正则表达式、php校验“统一社会信用代码”

    java import java.util.HashMap; import java.util.Map; /** * Desc: 社会信用代码证 检验 * Created  2016/5/18. */ ...

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

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

  9. JAVA、PHP统一社会信用代码、身份证号算法解析验证

    JAVA.PHP统一社会信用代码.身份证号算法解析验证 这是给某机关单位写系统的时候要验证统一社会信用代码用的是PHP写的方法 java的话也是同理有时间我再把java代码贴出来,这就先贴PHP JA ...

最新文章

  1. 可见的轮廓线用虚线绘制_为什么你用SketchUp没有别人“快”?
  2. shell中常用系统变量和条件判断
  3. JavaScript Set Homepage and Favorite
  4. 在STM32价格疯长下,哪些国产32可以替代?
  5. linux c 内存elf,gcc加入linux ELF有什么功能?
  6. codeforces 266B-C语言解题报告
  7. java restful文件传输_java中使用restful web service来传输文件
  8. ThreadLocal 在web环境下使用的边界问题
  9. idea插件sonar安装使用教程
  10. jsp 运用 session 登录输出
  11. android 8.0 无法接受到静态广播
  12. 男生追女生时的21个致命问题
  13. 网易互娱2017实习生招聘在线笔试(三)
  14. 2022-2028年中国眼镜制造行业市场竞争策略及未来发展潜力报告
  15. qt 从布局中删除子控件
  16. 很猛很疯狂,北京楼市促销十年少见 房价下跌论渐占上风
  17. 什么是redis?redis如何使用?
  18. go开源项目整理-新手篇_一周的前5篇文章:您正在从事什么开源项目?
  19. PDF文件怎么转Word?分享两种转换小技巧
  20. 计算智能学习1_感知机原理_水果生熟分类器_matlab实现

热门文章

  1. php理财游戏源码,PHP理财 复利 分红 拆分经营养成类游戏源码
  2. grouping_idgrouping sets
  3. 贴片元件的封装中名字后缀的 L N M的含义
  4. 山东企业办理ISO三体系认证有什么重要意义
  5. Hblock盘活企业级存储市场
  6. 魔兽世界服务器文件,Blizzard暴雪《魔兽世界》服务器异常替换文件For Win-32(2014年9月9日发布) 其他 暴雪...
  7. 通过OneDrive下载Google Photos里的照片
  8. Centos开发环境配置
  9. USB、Type-C、HDMI接口了解
  10. 输入一个字符串,内有数字和非数字字符,例如: A123x456 17960? 302tab5876 将其中连续的数字作为一个整数,依次存放到一数组a中。例如,123放在a[0],456放在a[1]……