diff --git a/hutool-core/src/main/java/cn/hutool/core/util/CreditCodeUtil.java b/hutool-core/src/main/java/cn/hutool/core/util/CreditCodeUtil.java
index 2cdbe7ef9..e1ee0bf26 100644
--- a/hutool-core/src/main/java/cn/hutool/core/util/CreditCodeUtil.java
+++ b/hutool-core/src/main/java/cn/hutool/core/util/CreditCodeUtil.java
@@ -7,7 +7,8 @@ import java.util.concurrent.ConcurrentHashMap;
import java.util.regex.Pattern;
/**
- * 统一社会信用代码工具类
+ * 统一社会信用代码(GB32100-2015)工具类
+ * 标准见:https://www.cods.org.cn/c/2020-10-29/12575.html
*
*
* 第一部分:登记管理部门代码1位 (数字或大写英文字母) @@ -24,7 +25,13 @@ 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 MapCODE_INDEX_MAP; @@ -110,10 +117,10 @@ public class CreditCodeUtil { } /** - * 获取校验码 + * 获取校验位的值 * * @param creditCode 统一社会信息代码 - * @return 获取较验位的值 + * @return 获取校验位的值,-1表示获取错误 */ private static int getParityBit(CharSequence creditCode) { int sum = 0; diff --git a/hutool-core/src/test/java/cn/hutool/core/util/CreditCodeUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/util/CreditCodeUtilTest.java index 0d5dcd378..9263feb66 100644 --- a/hutool-core/src/test/java/cn/hutool/core/util/CreditCodeUtilTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/util/CreditCodeUtilTest.java @@ -17,9 +17,17 @@ public class CreditCodeUtilTest { Assert.assertTrue(CreditCodeUtil.isCreditCode(testCreditCode)); } + @Test + public void isCreditCode2() { + // 由于早期部分试点地区推行 法人和其他组织统一社会信用代码 较早,会存在部分代码不符合国家标准的情况。 + // 见:https://github.com/bluesky335/IDCheck + String testCreditCode = "91350211M00013FA1N"; + Assert.assertFalse(CreditCodeUtil.isCreditCode(testCreditCode)); + } + @Test public void randomCreditCode() { final String s = CreditCodeUtil.randomCreditCode(); Assert.assertTrue(CreditCodeUtil.isCreditCode(s)); } -} \ No newline at end of file +}