手机和ICCID
ICCID存储在SIM卡的3F00/2FE2文件中,该文件包含IC卡的序列号(共10字节),操作员可以唯一标识该卡。
在CCITT E118中,将此序列号长度定义为0至18位数字和1位检查位(放置在最右侧)。
检查位总是放在第19位,即使序列号少于19位,也要填18位。
现在所有运营商都使用19位ICCCID 1位的校验和,不需要填充。
ICCID由以下组件:组成
Major Industry Identifier (MII):
Country code国家代码
Issuer identifier
individual account identification number
Parity check digit
验证算法也称为“模块10”算法,成为Luhn算法或Luhn公式。
例如: 896588081210001114x
ICC id 896588081210001114 double every other 8186108160161410001218 example : 18=8 1=9896187071410001218 sum of digits=64第一
第二阶段:将乘以2后得到的结果加上10位数的数字(如果有)和位数的数字
第3步:将所有数字相加
8 9 6 1 8 7 1 4 0 1 8=64
第四阶段:乘以9等于64*9=576
第5阶段: 576对10模制,576=6
6是格子位
ICCID的前两个数字是Industry Identifier,89表示电信业。
接下来的两位或三位数字是由E.164定义的Mobile Country Code
接下来的1-4位数字表示移动网络代码
接下来的两个数字与HLR相关(Home Location Register)
中国
89 86 01 11 01 51 00 22 55 69
?嗯?PHP
类sim卡实用程序{
public static function isvalidluhn($号){
Settype($number,' string ');
$sumTable=array(
Array(0,1,2,3,4,5,6,7,8,9),
Array(0,2,4,6,8,1,3,5,7,9)
);
$ sum=0;
$ flip=0;
For ($ I=strlen ($编号)-1;$ I=0;$ I-) {
$ sum=$ sumtable[$ flip 0 x 1][$ number[$ I]];
}
Return $ sum % 10====
}
public static function is valid sim($ sim _ id){
//89=电信
//1=United States
//[480-489]=Verizon
//{13}=sim帐户
//{1}=luhn check digit
$ pattern='/(89)(1)(48[0-9])(d { 13 })(d)$/';
//check to see if the pattern is valid followed by the luhn checksum
返回(false)!==preg _ match ($ pattern,$ sim _ id)self :3360 isvalidluhn($ sim _ id);
}
}
$iccids=array(
8914800000745809013’,//valid
898601110 ',//合法
8914800000745809014’,//invalid,wrong check digit
891480000074580901’,//invalid,wrong length
);
Foreach ($iccids as $iccid ){
Echo $ ICC id。“is”。(sim卡实用程序:3360 is valid sim ($ ICC id)?Valid' :' invalid '). ".n ';
} python版本
确认校验和
defluhn _ checksum(card _ number):
Def digits_of(n):
Return [int(d) for d in str(n)]
Digits=digits_of(card_number)
odd _ digits=digits[-1:3360-2]
even _ digits=digits[-2:3360-2]
校验和=0
Checksum=sum(odd_digits)
For d in even_digits:
Checksum=sum(digits_of(d*2))
退货校验和% 10
defis _ luhn _ valid(card _ number):
return luhn _ checksum(card _ number)==0会建立总和检查
def calculate _ luhn(partial _ card _ number):
check _ digit=luhn _ checksum(int(partial _ card _ number)* 10)
return check _ digit if check _ digit==0 else 10-check _ digit您可以测试通过以下附录32个验证的30个ICCID。
89014103279529155401
89014103279529155690
89014103279529155708
89014103279529155427
89014103279529155435
89014103279529155443
89014103279529155450
89014103279529155484
89014103279529155492
89014103279529155500
89014103279529155526
89014103279529155534
89014103279529155542
89014103279529155559
89014103279529155591
89014103279529155625
89014103279529155633
89014103279529155641
89014103279529155658
89014103279529155666
89014103279529155674
89014103279529155682
89014103279529155724
89014103279529155732
89014103279529155567
89014103279529155575
89014103279529155583
89014103279529155740
89014103279529155765
89014103279529155773
89014103279529155468
89014103279529155476
1.《【icc 银行卡】什么是ICCID? Luhn校验算法解析和30个合规的ICCID示列》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《【icc 银行卡】什么是ICCID? Luhn校验算法解析和30个合规的ICCID示列》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/caijing/2107694.html