15位IMEI号校验算法

15位IMEI号校验算法:

package com.ghw.springboot;

import org.apache.commons.lang3.StringUtils;

public class GhwTest2 {
    public static void main(String[] args) {
        System.out.println("aaa" + judgeCorrectImei("864652030131422"));
    }

    /**
     * 判断IMEI号是否合法,合法返回true,不合法返回false
     *
     * @param imei IMEI号
     * @return if 合法 true else false
     */
    private static Boolean judgeCorrectImei(String imei) {
        final int imeiLength = 15;
        if (imei.length() == imeiLength) {
            String check = StringUtils.substring(imei, 14);
            imei = StringUtils.substring(imei, 0, 14);
            char[] imeiChar = imei.toCharArray();
            int resultInt = 0;
            for (int i = 0; i < imeiChar.length; i++) {
                int a = Integer.parseInt(String.valueOf(imeiChar[i]));
                i++;
                final int temp = Integer.parseInt(String.valueOf(imeiChar[i])) * 2;
                final int b = temp < 10 ? temp : temp - 9;
                resultInt += a + b;
            }
            resultInt %= 10;
            resultInt = resultInt == 0 ? 0 : 10 - resultInt;
            if (StringUtils.equals(String.valueOf(resultInt), check)) {
                return true;
            }
        }
        return false;
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 引言 在金融类软件开发过程中,经常会涉及到用户银行卡信息的校验,包括银行卡卡号、开户人姓名、身份证号和手机号等。理...
    亦枫阅读 16,754评论 5 36
  • 奇偶校验、海明码、CRC循环冗余校验码 三种校验码比较重要,需要牢记,在计算机网络中用处较大 奇偶校验 根据被传输...
    正经龙阅读 13,163评论 0 1
  • 笔者目前使用的jdk版本是1.6.0_29,Eclipse版本是Juno Release,Build id 201...
    godson_ds阅读 13,964评论 1 14
  • 1、TCP为什么需要3次握手,4次断开? “三次握手”的目的是“为了防止已失效的连接请求报文段突然又传送到了服务端...
    杰伦哎呦哎呦阅读 8,849评论 0 6
  • 重要的事情: 1.去原来公司处理客户问题,并咨询公司情况。完成 2.投简历选择公司,工作已经定下来,周一去上班 健...
    关童幻阅读 2,325评论 0 0