ICCID共20位, 最后一位的校验位计算规则如下:
-
取前19位 . 从左到右奇数位开始. 乘以2 然后计算个位与十位数之和.
-
将所有偶数位的数字与上一步得到的值全部相加
-
将上一步得到的值乘以9 然后取余. 得到的值就是第20位的校验位
例: 89860262191507034404 最后一位校验位是4
第三行相加: 1+6+9+1+6+6+0+2+1+2+2+2+9+2+5+0+7+0+3+8+4+0 = 76
76*9 = 684
校验位就是: 684%10=4
可以到 计算ICCID校验码 验证该计算方法。
附PHP程序:
<?php
function checkLuhn($iccid) {
$strLen = strlen($iccid);
if ($strLen == 19) {
$rest = 0;
for ($i = 0; $i < $strLen; $i++) {
if($i % 2 == 0){
$oddNum = $iccid[$i] * 2;
$rest += intval($oddNum / 10) + $oddNum % 10;
} else {
$rest += $iccid[$i];
}
}
$rest = $rest * 9;
return $rest % 10;
} else {
return "6";
}
}
?>