USIM 卡的 ICCID 一共 20 位数字,其中最后一位为校验位。校验算法采用卢恩算法(Luhn algorithm),具体规则:
- 取前19位 . 从左到右奇数位开始. 乘以 2 然后计算个位与十位数之和。
- 将所有偶数位的数字与上一步得到的值全部相加。
- 将上一步得到的值乘以 9,然后对 10 取余, 得到的值就是第20位的校验位。
另外需要留意,卡商印刷的时候不一定会印刷校验位,有些卡商会将第二十位数字印刷成卡商代码。
常见卡商代码:
卡商 | 代码 |
---|---|
恒宝 | B |
北京华虹 | H |
握奇 | W |
金雅拓 | Y |
东信和平 | X |
武汉天喻 | C |
江西捷德 | G |
所以,印刷的卡号与从设备获取的卡号有可能不一致,对于业务使用,仅取前 19 位卡号。