USIM 卡的 ICCID 一共 20 位数字,其中最后一位为校验位。校验算法采用卢恩算法(Luhn algorithm),具体规则:

  • 取前19位 . 从左到右奇数位开始. 乘以 2 然后计算个位与十位数之和。
  • 将所有偶数位的数字与上一步得到的值全部相加。
  • 将上一步得到的值乘以 9,然后对 10 取余, 得到的值就是第20位的校验位。

另外需要留意,卡商印刷的时候不一定会印刷校验位,有些卡商会将第二十位数字印刷成卡商代码。

常见卡商代码:

卡商代码
恒宝B
北京华虹H
握奇W
金雅拓Y
东信和平X
武汉天喻C
江西捷德G

所以,印刷的卡号与从设备获取的卡号有可能不一致,对于业务使用,仅取前 19 位卡号。