治理与安全🔥8.0

知道自己要过素数检测的校验和:逆向拆解中国统一社会信用代码校验算法

原标题: 知道自己要过素数检测的校验和:逆向拆解中国统一社会信用代码校验算法

DevToData·2026/10/28 04:04:43🔗 原文

📋总体概括

这是一篇针对中国统一社会信用代码(USCC)校验算法的英文技术拆解。作者指出多数英文资料中的校验代码存在两类错误:接受了不存在的字符,或套用了错误的校验和算法。文章从GB 32100-2015标准出发,解释了31个合法字符(数字0-9加去掉I、O、S、V、Z的字母表)的防混淆设计,并逐步还原模31校验机制,全程可在浏览器中验证,无需访问登记系统。

⚡关键信息

  • ▸统一社会信用代码合法字符集共31个:0-9加上剔除I、O、S、V、Z五个字母的A-Z,每个剔除对应一对视觉混淆(I/1、O/0、S/5、V/U、Z/2)。
  • ▸最廉价的第一步校验是字符集检查而非校验和,非法字符可直接判废。
  • ▸英文世界流传的USCC校验代码常犯两类错误:放行不存在的字符、借用错误的校验算法。
  • ▸作者声称整个算法推导无需访问工商登记接口,一个浏览器标签页即可验证所有结论。
  • ▸校验机制基于GB 32100-2015标准的模31加权计算,正确实现只需一屏代码。

🔥犀利点评

这篇的价值不在代码量——一屏代码谁都会写——而在于把「为什么这么设计」讲透:字符集剔除是防混淆的零成本层,校验和才是最后一道闸。多数工程师抄GitHub上的校验函数时不问出处,借来的算法错得悄无声息,脏数据照样入库。对做中国企业数据对接的团队,这是一篇能直接省掉线上事故的必修课。

本文由本站自动聚合,以下为原始来源:前往 DevToData 阅读全文 →