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 Map CODE_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
+}