账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    统一社会信用代码的校验问题
    34
    0

    统一社会代码的生成规则是根据国家标准GB32100—2015《法人和其他组织统一社会信用代码编码规则》标准制定的。

    先来一段代码:

        public static boolean validate18(String bizNo) {
    
            String regex = "^([0-9ABCDEFGHJKLMNPQRTUWXY]{2})([0-9]{6})([0-9ABCDEFGHJKLMNPQRTUWXY]{10})$";
            if (!bizNo.matches(regex)) {
                return false;
            }
    
            String baseCode = "0123456789ABCDEFGHJKLMNPQRTUWXY";
            char[] baseCodeArray = baseCode.toCharArray();
            Map<Character, Integer> codes = new HashMap<Character, Integer>();
            for (int i = 0; i < baseCode.length(); i++) {
                codes.put(baseCodeArray[i], i);
            }
    
            char[] businessCodeArray = bizNo.toCharArray();
            Character check = businessCodeArray[17];
            if (baseCode.indexOf(check) == -1) {
                return false;
            }
    
            int[] ws = { 1, 3, 9, 27, 19, 26, 16, 17, 20, 29, 25, 13, 8, 24, 10, 30, 28 };
            int sum = 0;
            for (int i = 0; i < 17; i++) {
                Character key = businessCodeArray[i];
                if (baseCode.indexOf(key) == -1) {
                    return false;
                }
                sum += (codes.get(key) * ws[i]);
            }
    
            int c18 = 31 - sum % 31;
            if (c18 == 31) {
                c18 = 0;
            }
            return c18 == codes.get(check);

    从代码上看应该满足国家标准,实际应用过程中发现存在很多不满足的情况,目前主要发现福建很多不满足,比如:91350211M0000XUF46,9131000063159284XQ等

    请问各位有没有这类校验?

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 雪流狼云 普通会员 1楼

      统一社会信用代码(亦称为统一的社会信用代码)是由18位数字组成的代码,用于识别和管理个人、企业和其他组织的信息。然而,校验问题可能会影响数据的准确性和完整性。以下是一些可能导致校验问题的原因:

      1. 数据输入错误:在输入统一社会信用代码时,可能会出现拼写错误、数字顺序错误、大小写错误等问题。

      2. 数据输入格式错误:如果统一社会信用代码的格式不正确,可能会导致校验失败。例如,如果代码中的某些字符被错误地编码或编码方式不正确,可能会导致校验失败。

      3. 数据过期:如果统一社会信用代码的有效期已过,可能会导致校验失败。如果未在有效期内续期,可能会导致校验失败。

      4. 数据未正确使用:如果统一社会信用代码被用于错误的目的,可能会导致校验失败。例如,如果统一社会信用代码被用于欺诈、恶意使用等不正当目的,可能会导致校验失败。

      解决这些问题的方法包括:

      1. 建立有效的数据输入规则和校验机制,以确保数据的准确性和完整性。

      2. 定期对统一社会信用代码进行校验,以确保其有效性。

      3. 对于过期的统一社会信用代码,应及时续期。

      4. 对于使用统一社会信用代码不当的情况,应进行纠正,并确保其正确使用。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部