15ビットIMEIチェックアルゴリズム

1333 ワード

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;
    }
}