锁卡新增需求设计文档

锁卡新增需求设计文档

一、需求概述

1.实现SHA256加密算法

2.实现主副卡的切换,支持卡2为主卡时卡1与卡2关联

二、新旧锁卡方案的区别

1.实现SHA256加密算法


旧锁卡方案

新锁卡方案

加密算法

MD5

SHA256

解锁码位数

8

16

解锁码生成方式

手机固定的IMEI号经过MD5加密生成

随机生成的盐值经过SHA256加密生成

 

2. 实现主副卡的切换,支持卡2为主卡时卡1与卡2关联


旧锁卡方案

新锁卡方案

1为主卡

先弹卡1的解锁框,再弹卡2的解锁框

先弹卡1的解锁框,再弹卡2的解锁框

2为主卡

先弹卡1的解锁框,再弹卡2的解锁框

先弹卡2的解锁框,再弹卡1的解锁框

二、需求分析

1.支持16位解锁码

之前解锁码是根据手机的IMEI号通过MD5加密算法计算得出的。由于该算法是根据固定IMEI号计算得出的,安全性不高。按照客户要求升级加密算法,提高安全性。

16位解锁码是通过SHA256算法计算获得,详情流程如下:

 

其中:

1.盐值是根据时间随机生成的,通过工具写入到NVRAM

2.AP端在每次手机重启后均会通过AT指令获取盐值保存到临时数据库中

3.手机解锁成功后,modem端会修改NVRAM中锁卡的state标志位,使解锁成功后的手机可以正常识别卡。

 

2.主副卡切换

之前只支持双卡场景【双卡锁卡1,但是卡2关联卡1】(卡1默认为主卡)这种情况,由于Tango手机是支持主副卡切换的,因此也需要支持【卡2为主卡时,卡1关联卡2】(卡2为主卡)的情况。

这个功能需要modem层和AP层共同实现。其中APP层主要判断哪个卡为主卡,根据主卡来协调解锁框的弹出顺序,而关联的相关功能则由modem层实现。具体流程如下:

  1. 普通的双卡锁卡

先弹主卡的解锁框,再弹副卡的解锁框

  1. 合法关联

1)若卡1为主卡,卡12写入锁卡文件,此时卡1插入合法卡,则卡2不管是否插入合法卡均合法。

2)若卡2为主卡,卡12写入锁卡文件,此时卡2插入合法卡,则卡1不管是否插入合法卡均合法。

  1. 解锁关联

1)若卡1为主卡,卡12写入锁卡文件,

a.1插入非法卡,卡1解锁成功,则卡2不需要解锁,不会弹解锁框,卡12均能识别卡。

b.1插入合法卡,则卡2弹解锁框需要解锁。

2)若卡2为主卡,卡12写入锁卡文件,

a.2插入非法卡,卡2解锁成功,则卡1不需要解锁,不会弹解锁框,卡12均能识别卡。

b.2插入合法卡,则卡1弹解锁框需要解锁。

三、具体实现

1.支持16位解锁码

修改的文件主要包含:PhoneGlobals.java   IccNetworkDepersonalizationPanel.java

  1. 通过AT指令获取当前手机的盐值(AT+QSMLE

PhoneGlobals.java{

         parseSIMLockInfoData(){…}//解析AT指令返回的字串,获取手机的盐值

}

  1. 实现SHA256算法

IccNetworkDepersonalizationPanel.java{

encryptSHA(){…}//根据输入的解锁码及盐值计算出对应的64位字串

getPWD(){…}//从生成的64位字串中过滤出最终16位解锁码

}

2.主副卡切换

修改的文件主要包含:PhoneGlobals.java

PhoneGlobals.java{

 

         /*

  1. 先判断哪张卡是主卡SubscriptionManager.getDefaultDataSubId();
  2. 再判断上传的phoneID,根据主副卡选择优先出解锁框

         */

         initIccPanel(){…}//初始化解锁框

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值