MEID转PESN操作说明
最近应项目需求,写了一个meid到pesn的转换工具,用于以后的学习和使用。
一、 开发背景
众所周知,CDMA手机在网络鉴权时所携带手机唯一标示符是esn/pesn/meid,GSM手机则携带的是esn/imei/sn等。由于现在手机越来越多,32bit的esn已经不能满足用户需求了,所以就出现了meid。
现在我们来看看meid,这个东西就是以前我们所说的32bit的esn的扩展版,meid为56bit,我们可以通过sha1算法将meid转换成为pesn.其中pesn也是32bit,称为伪esn。目前大概有20000万多个meid,需要我们转换成为pesn。
二、 实现方法
我们定义了2个文件,一个为输入文件,一个为输出文件,输入文件里面保存的是需要转换的meid,输出文件中保存转换完后的pesn。
首先,我们从a.txt中读入我们需要的meid,并以char的形式保存到一个数组中,这里我们定义的数组里面保存14个元素,因为保存的是16进制,总共56位。
其次,将数组元素转换成为对应的值,这里有一点需要注意,meid里面的字符串有ABCDEF和abcdef以及0-9之分,而16进制的A和a所代表的值都是一样的,在转换的时候需要考虑到这点。将数组元素由char转换成为8位无符号整数,
再者,将每个数组元素中的低4位取出来放到事先定义好的unsigned long的数组中,作为一个值,这个值就是我们所需要转换的meid的一部分。完成meid数组的初始化后,我们就能利用sha1算法来求pesn了,求出的pesn是一个整数值,我们需要使用fprintf()按照16进制的格式来输出。
到此为止,我们的转换就结束了。
三、 工具使用
工具开发好了之后,其使用起来非常简单,我们只要确保a.txt中的数字必须为14位的16进制数字,比如A1000019B01405。
1、在a.txt中输入16进制的meid号码。
2、运行HexMeidToPesn.exe。
3、查看b.txt中的结果。
2011-2-9