首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

统一社会信用代码 验证js

统一社会信用代码是一组长度为18位的用于法人和其他组织身份识别的代码。其验证主要涉及到校验码的计算等方面。

一、基础概念

  1. 组成结构
    • 统一社会信用代码由登记管理部门代码(1位)、机构类别代码(1位)、登记管理机关行政区划码(6位)、主体标识码(9位,采用组织机构代码)和校验码(1位)组成。
  • 校验码计算原理
    • 按照特定的加权算法对前面17位数字进行计算得到校验码。每个数位都有对应的权重因子,例如从左到右第1位权重为1,第2位为3,第3位为9,第4位为27,第5位为19,第6位为26,第7位为16,第8位为17,第9位为20,第10位为29,第11位为25,第12位为13,第13位为8,第14位为24,第15位为10,第16位为30,第17位为28。
    • 将前面17位数字分别乘以对应的权重因子后求和,再将这个和除以31取余数。然后用31减去这个余数得到校验码(如果余数为0,则校验码为0;如果余数为30,则校验码为X)。

二、应用场景

  1. 企业注册登记
    • 在工商登记过程中,用于唯一标识企业身份,确保企业在不同部门之间的信息共享和管理的准确性。
  • 信用监管
    • 相关监管部门可以通过统一社会信用代码快速查询企业的信用信息,包括是否有违法违规记录等。
  • 商务合作
    • 企业在与其他企业进行商务合作时,可以通过验证统一社会信用代码来初步判断对方企业的合法性和信誉状况。

三、JavaScript验证示例代码

代码语言:txt
复制
function validateCreditCode(code) {
    const weightFactors = [1, 3, 9, 27, 19, 26, 16, 17, 20, 29, 25, 13, 8, 24, 10, 30, 28];
    const checkCodeMap = {
        '0': 0,
        '1': 1,
        '2': 2,
        '3': 3,
        '4': 4,
        '5': 5,
        '6': 6,
        '7': 7,
        '8': 8,
        '9': 9,
        'X': 30
    };
    if (code.length!== 18) {
        return false;
    }
    let sum = 0;
    for (let i = 0; i < 17; i++) {
        const digit = parseInt(code[i]);
        if (isNaN(digit)) {
            return false;
        }
        sum += digit * weightFactors[i];
    }
    const mod = sum % 31;
    const expectedCheckCode = checkCodeMap[31 - mod];
    const actualCheckCode = checkCodeMap[code[17]];
    return expectedCheckCode === actualCheckCode;
}

在上述代码中:

  1. 首先定义了权重因子数组weightFactors和校验码映射对象checkCodeMap
  2. 检查输入的统一社会信用代码长度是否为18位。
  3. 计算前面17位数字与权重因子的乘积之和。
  4. 根据计算得到的余数求出预期的校验码,并与实际输入的第18位校验码进行比较,如果相等则验证通过,否则验证失败。
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券