使用方法
- 输入框默认已经填好
91350100M000100Y43,这是 GB 32100-2015 附录里的案例。改任意字符立即重算,光标停在输入框里按 Enter 同样触发。 - 代码必须是 18 位大写。输入里出现小写字母会被单独指出来(第几位、是什么字符),不会静默转大写蒙混过去。
- 结果区第一行给结论:是否通过、算得的校验位、登记管理部门与机构类别;下面七行是 S 的求和过程、取模结果与各位分段。
- 工具区下方是 18 行逐位权重表,列出每一位的字符、在字符集里的下标、权重与乘积,默认显示 12 行,点「加载更多」展开余下 6 行。
- 点「导出 CSV」把这张逐位表存成带字节序标记的文件;「复制对照表」复制正文里那张登记管理部门与行政区划表,制表符分隔。
- 两个示例按钮分别填入附录案例与一个自造的结构演示码。演示码只保证按算法算得通,不代表真有这家企业。
- 校验不通过时会写明「前 17 位算得校验码应为某字符,而第 18 位是某字符」,照着改一位就能定位到手抄错在哪。
- 本页只做格式与校验位计算,不联网查企业登记信息,也不会把代码上传到任何地方。
这个统一社会信用代码校验工具能解决什么
统一社会信用代码印在营业执照、发票、招标文件与合同上,抄错一位后面整套流程都卡住。统一社会信用代码校验这一页做的就是把 18 位拆开,告诉你它格式上是否自洽、错在哪一位,以及第 1 位与第 2 位分别代表什么部门与机构类别。
第一类是录入与对账。从纸质执照上抄下来的代码,最容易错的是把 0 抄成 O、把 1 抄成 I、把 2 抄成 Z——字符集恰恰把 I O S V Z 五个易混字符去掉了,所以这类错会直接被判为非法字符,并指明是第几位。校验位不符则意味着某一位抄错或顺序错了。
第二类是批量数据清洗。导出的表格里几千条代码,肉眼挑不出哪条不对。把可疑的那几条逐条代进本页,S 与 S % 31 都会算出来,和内部的对账脚本用的是同一套规则,可以逐步核对到具体某一位。
第三类是辨认代码结构。18 位不是随机串:第 1 位是登记管理部门,第 2 位是机构类别,第 3-8 位是行政区划,第 9-17 位是主体标识码(也就是原组织机构代码那 9 位),第 18 位才是校验码。看清分段之后,看到 91 开头、9 开头、Y 开头就能先有个大概判断。
计算原理与变量说明
字符集共 31 个字符:0123456789ABCDEFGHJKLMNPQRTUWXY,即 0 到 9 接 A 到 Y,但跳过 I、O、S、V、Z 五个容易与数字混淆的字符。每一个字符在字符集里的位置就是它参与运算的「下标」,从 0 数起:0 的下标是 0,A 的下标是 10,Y 的下标是 30。
权重是固定 17 项:1,3,9,27,19,26,16,17,20,29,25,13,8,24,10,30,28。它不是简单递增,而是 3 的幂对 31 取模后的序列:30=1、31=3、32=9、33=27、34=81 ≡ 19 (mod 31),后面依此类推。取模保证了权重始终落在 0 到 30 之间。
| 分段 | 位序 | 含义 | 默认值 |
|---|---|---|---|
| 登记管理部门 | 第 1 位 | 1 机构编制、2 外交、3 司法行政、4 文化、5 民政、9 工商、Y 其他 | 9 = 工商 |
| 机构类别 | 第 2 位 | 以工商为例:1 企业、2 个体工商户、3 农民专业合作社 | 1 = 企业 |
| 行政区划 | 第 3-8 位 | GB/T 2260 的六位数字码,省级两位 + 市级两位 + 县级两位 | 350100 |
| 主体标识码 | 第 9-17 位 | 原组织机构代码的 9 位,自带校验位但本页不做二次校验 | M000100Y4 |
| 校验码 | 第 18 位 | 由前 17 位按 MOD 31-1 算出 | 3 |
为什么是 MOD 31-1 而不是常见的 MOD 11-2。身份证号码用的是 MOD 11-2,校验位可能是罗马数字 X;统一社会信用代码用的是 GB/T 17710(等同 ISO 7064)里的 MOD 31-1,模数是字符集长度 31,校验位一定落在字符集内部,不会出现 X 这种字符集外的字符。两套算法不通用,拿身份证的校验思路套这里会得到错的结论。
具体算式。先求 S = Σ(下标i × 权重i),i 从 1 取到 17;再算 C[(31 - S % 31) % 31],C 就是字符集。外层再对 31 取一次模,是因为当 S % 31 恰好为 0 时,(31 - 0) = 31 已经越界,必须回到 0。默认示例的 S 是 1640,1640 % 31 = 28,(31 - 28) % 31 = 3,字符集第 3 位正是字符 3。
校验通过只说明格式自洽。校验位是对前 17 位的函数,只要前 17 位变了校验位就跟着变。一个凭空编出来的代码同样可以算得通,所以本页的结论只是「格式合法」,不证明这家企业真实存在、也不证明代码已经被登记。
完整示例(数值仅作演示)
默认一组:91350100M000100Y43。前 17 位 91350100M000100Y4 的逐位乘积依次是 9、3、27、135、0、26、0、0、420、0、0、0、8、0、0、900、112,求和得 S = 1640;1640 % 31 = 28;校验码下标 (31 - 28) % 31 = 3,字符集第 3 位是 3,与第 18 位一致,校验通过。
自造一组(结构演示用,非真实企业):91110108MA01ABCD2 算得校验码 H,拼成 91110108MA01ABCD2H;91440300MA5EFGHK7 算得 6,拼成 91440300MA5EFGHK76;91310000MA1K35Q88 算得 T,拼成 91310000MA1K35Q88T。这三个只是按算法推出来的演示码,用来说明「随便一个前 17 位都能算出校验位」,不是任何真实企业的代码。
错码一组:把默认示例的第 18 位改成 4,得到 91350100M000100Y44。前 17 位算出应为 3,第 18 位却是 4,页面会直接指出两者不一致。若把某一位写成小写,例如第 9 位的 M 写成 m,页面会指出第 9 位是小写字母而不是笼统地说「格式错误」。
登记管理部门与行政区划对照表
下表把第 1 位、第 2 位与第 3-8 位的常见取值列出来,逐位权重表看不懂某一位属于哪一段时,可以回来查这张表。「复制对照表」按钮复制的就是这张表。
| 类别 | 代码 | 含义 |
|---|---|---|
| 登记管理部门(第 1 位) | 1 | 机构编制 |
| 登记管理部门(第 1 位) | 2 | 外交 |
| 登记管理部门(第 1 位) | 3 | 司法行政 |
| 登记管理部门(第 1 位) | 4 | 文化 |
| 登记管理部门(第 1 位) | 5 | 民政 |
| 登记管理部门(第 1 位) | 9 | 工商 |
| 登记管理部门(第 1 位) | Y | 其他 |
| 机构类别(第 2 位,以工商 9 为例) | 1 | 企业 |
| 机构类别(第 2 位,以工商 9 为例) | 2 | 个体工商户 |
| 机构类别(第 2 位,以工商 9 为例) | 3 | 农民专业合作社 |
| 行政区划(第 3-8 位) | 110000 | 北京市 |
| 行政区划(第 3-8 位) | 310000 | 上海市 |
| 行政区划(第 3-8 位) | 330100 | 浙江省杭州市 |
| 行政区划(第 3-8 位) | 350100 | 福建省福州市 |
| 行政区划(第 3-8 位) | 440300 | 广东省深圳市 |
| 行政区划(第 3-8 位) | 510100 | 四川省成都市 |
行政区划用的是 GB/T 2260 的六位数字码:前两位是省(直辖市、自治区),中间两位是市(地区、自治州),最后两位是县(区、旗)。省会城市的市级段常常是 01,所以 350100 读作福建省福州市本级,具体到某个区会再往下细分一位。
结果边界、舍入与适用说明
- 代码长度必须是 18 位。输入 17 位或 19 位都会直接报长度错,并按实际位数说明差几位,不会截断也不会补位。
- 字符只允许字符集内的 31 个。出现 I、O、S、V、Z 会单独提示「是字符集特意去掉的易混字符」;出现小写字母会提示先转大写;出现空格、短横线与中文标点会提示该位不属于字符集。
- 校验位不符时给出应得值与实际值两条信息,方便定位是哪一位抄错;但本页不枚举「把哪一位改成什么能变正确」。
- 第 9-17 位主体标识码自带一套校验规则,本页不重复校验它,只把它作为普通字符参与第 18 位的计算。
- 登记管理部门与机构类别只在第 1 位为 9(工商)时给出机构类别;其他部门的机构类别编码另有规则,本页标注为需另行查表,不猜。
- 校验通过不等于企业真实存在。要确认主体是否存续、名称是否一致,请到国家企业信用信息公示系统按代码查询。
- 输入框被清空时点「开始校验」会自动填回附录案例,不会输出空结论;输入前后带空格会先去掉再校验。
- 页面不联网、不写本地存储;导出的 CSV 带字节序标记,Excel 打开不乱码。
常见问题
为什么字符集里没有 I、O、S、V、Z?
这五个大写字母容易与数字混淆:I 像 1、O 像 0、S 像 5、V 像 U 或与 W 混、Z 像 2。字符集去掉它们之后,字符总数从 36 降到 31,模数也就跟着定成 31。
MOD 31-1 和身份证的校验算法一样吗?
不一样。身份证用 MOD 11-2,校验位可能是 X;统一社会信用代码用 GB/T 17710(ISO 7064)的 MOD 31-1,校验位一定落在字符集内。两者的字符集、权重与取模方式都不同。
权重 1,3,9,27,19 是怎么来的?
是 3 的幂对 31 取模:3 的 0 到 4 次方分别是 1、3、9、27、81,81 对 31 取模得 19,之后照此递推,共取 17 项。
校验通过就能说明这家公司存在吗?
不能。校验位只由前 17 位决定,凭空编一组前 17 位也能算出合法的校验位。要确认主体是否真实存续,请到国家企业信用信息公示系统查询。
为什么输入小写字母不自动转大写?
抄错大小写本身就是最常见的录入错误之一。直接指出第几位是小写,比静默转大写更能帮你发现原件与录入不一致。
第 9-17 位是什么,为什么不再校验一次?
那是主体标识码,也就是原组织机构代码的 9 位,它自带一套校验规则。统一社会信用代码的校验只针对第 18 位,本页照此办理,不重复校验。
Y 开头的合法吗?
合法。第 1 位为 Y 表示登记管理部门为「其他」,例如部分境外或非编办管理的机构。字符集里保留了 Y,权重计算与数字开头完全一致。
输入的代码会上传到服务器吗?
不会。解析、求和、取模与导出都在本页完成,没有发起任何网络请求,也不写入浏览器存储,刷新页面即恢复默认示例。