2013年9月27日 星期五 晴

我总是被接到一些无头无尾的邮件,没有人告诉我上下文,然后就让我去做什么项目了。

这个D项目也不例外,去和客户谈的时候,我一无所知。见面聊了才知道,先前别的部门做了,我们部门移植了一下,客户是来让我们改bug的。

客户需求:

1. 最根本需求:客户有自己的内部通讯录,员工可以看到通讯录里人的名字,但不能看到电话号码。

2. 围绕着需求1,演变出不想让员工自行安装APK,比如360安全卫士等能截获号码看到。

3. 围绕着需求1,担心log能看到。

之前开发情况:

1. 只是把android Contact的位置偏移了一下,写到数据库里的都是明文的号码。

2. 在通话记录、短信里显示的是一个真实号码,其中中间几位被*来替代,比如138****8888。

有一些bug,比如拨通话记录里的A,不小心就拨成B就出去了。之前的代码,我一行都没看,bug有那么五六个,看起来比较烦。

我也是没事,于是给客户提了两条主要的意见:

1. APK安装,我们也不知道你哪些可以安装,哪些不能安装,所以我可以提供一个白名单接口,动态更新,由他们来决定要更新哪些APK。

我说我能做到这一条,客户已经喜出望外了。

2. 能否做一个网络通讯录?号码都在底层和网络这边加密和解密就好,本地不存储通讯录。

我是这样说服客户的:你看过《暗算》么?就是谍战片,那些通过电报或者电台里传输的,很多都是加密过的。如果你加密方式足够好,那之前的都可以不做了。

客户当然一时时接受不了的,他得想半天。不过他当场表示,我提出的更好,更具安全性。

我也是有私心的,我就是不想改那些bug,客户同意我把自带的Mms和Contact给去掉,那我只要实现了,就没有什么bug了。

从底层来改,修改的地方不多,比较简洁,也符合我的风格。

工作量不大,具体的一些工作如下:

一、分别在底层和网络服务器都加上加解密。

- 在framework比较靠近底层的地方(当然,modem才是通讯更底层的地方),分别修改通话和短消息这几个地方。

事实上,我记得我只修改了5个文件,分别是发短信,收短信、来电、去电、Mms,分别在这些地方调用函数一下就可以了。

以来电为例:

来电--》framework层加密来电号码-》上层处理或者广播时会显示加密的号码--》客户APK截获

去电是一个反向的过程,原理是一样的。

- 加密后的号码,报给客户的APK,客户的APK用约定好的加解密算法来解密即可。

如果担心有人反编译APK,加解密算法可以用C来打包处理,实在不行就上传到他们的后台服务器处理好了。

- 加解密算法:

没有必要采用非对称加密算法,采用简单的对称加密算法就好。

加密的密钥可以由IMEI + IMSI + 独特密钥就好。

服务器上记录了每台手机的IMEI和IMSI号,离职的时候,禁用这个账号,对传上来的IMEI和IMSI不予理睬即可。

如果员工更换手机,那么IMEI就不起作用了,防止员工换手机吧。

如果员工更换了SIM卡,那么IMSI也不起作用了,防止员工换SIM卡去运营商营业厅打通话清单。

二、APK安装动态白名单

- 直接修改PackageInstaller.apk的源码,安装的时候加个条件判断,不符合条件就不能安装就行。这个条件,就是白名单,可以读取比如一个文件或者APK的preferenece等。

- 在framework里封杀adb安装的方式,这应该可以防止豌豆夹和91助手之类的安装吧。

- 客户要求干掉文件管理器。

- 考虑到的问题:其实apk安装的底层函数我没修改,如果有人直接调用函数直接安装的话,可能是可以的。

如果有人能获取root权限的话,可以直接push进去的,除非我连手机自带的adb也改了。

当然,有了上述的加解密算法,APK的动态白名单无足轻重,但我也可以后续在别的项目上使用。

现在我的斯玛特卡只有300多块钱了,有点怀念以往有几千块钱的时候挥金如土的样子,国庆在家写1~2篇专利好了,一篇专利1500元。专利其实很好写,你能写博客,稍微加工一下,主要是加解密的算法和过程写详细一点(审核专利的只看有没有重复的,如果算法重复,那就换另外一种算法就成,反正就强调新颖性、有价值之类的就好),垃圾专利的钱还是很好骗的。

android通讯录加密,一种手机通讯录加解密方式相关推荐

  1. 学习加密(四)spring boot 使用RSA+AES混合加密,前后端传递参数加解密(方式一)

    参考地址:https://blog.csdn.net/baidu_38990811/article/details/83540404

  2. android 悬浮按钮 魅族,Android使用RecycleView实现魅族手机通讯录界面

    原标题:Android使用RecycleView实现魅族手机通讯录界面 本文作者 本文由_小马快跑_投稿. _小马快跑_的博客地址: http://www.jianshu.com/u/18502855 ...

  3. android的kotlin通讯录,Android Loader的使用以及手机通讯录的获取方法

    Android的主线程中执行长时间操作,导致界面无响应,会引起ANR.如果需要执行较长时间的操作,一般会在另一个线程处理,然后将数据转交给主线程进行显示,Android本身为我们提供了一些机制处理这种 ...

  4. mac 备份android 手机通讯录,苹果手机怎么备份通讯录到电脑?手机通讯录如何备份...

    苹果手机怎么备份通讯录到电脑?手机通讯录如何备份?自从上次小编将手机的通讯录误删后,就对手机的数据备份恢复有了更多的研究,对于苹果手机如何备份通讯录的问题,小编可以通过使用数据恢复软件来解决,可以备份 ...

  5. 学习加密(四)spring boot 使用RSA+AES混合加密,前后端传递参数加解密

    学习加密(四)spring boot 使用RSA+AES混合加密,前后端传递参数加解密 技术标签: RSA  AES  RSA AES  混合加密  整合 前言:    为了提高安全性采用了RSA,但 ...

  6. SpringBoot八种bean的加载方式

    目录 第一种bean的加载方式-配置文件 第二种加载bean方式-注解和扫描 创建第三方的bean对象 第三种加载bean方式-不使用配置文件 扩展-bean的加载方式扩展FactoryBean< ...

  7. 微信公众平台开发(9)--消息加解密方式

    点此查看 微信公众号/微信网页/微信支付/企业微信/小程序开发合集及源代码下载 本文目录 1. 前言 2. 判断加解密方式 3. 测试 4. 小结 1. 前言 登录微信公众平台,点击[设置与开发]-[ ...

  8. Android屏幕导出联系人,安卓手机通讯录导出到电脑(三种方法帮你导通讯录)...

    换手机怎么导通讯录? 手机中有几个东西比较重要,笔者罗列了一下,最重要的东西因人而异,不过基本上就两个:"通讯录"."照片",照片平时可以拷贝出来,通讯录在更换 ...

  9. android电话本导入iphone,怎么把安卓手机通讯录导入iphone?安卓手机通讯录导入苹果手机三大方法分享...

    Android是一种基于Linux的自由及开放源代码的操作系统,也正因此安卓系统迅速扩大市场份额;最近很多人都在问怎么把安卓手机通讯录导入iphone?下面为你带来安卓手机通讯录导入苹果手机三大方法分 ...

  10. Android 代码新增联系人至手机通讯录中

    因项目需求,需要将本产品的客服电话信息,默默写入用户手机通讯录中,作为一个程序员,内心是拒绝的,但仍要实现该功能. 1. 动态申请读写权限 首先,在 Maniifest.xml 文件中添加如下两个权限 ...

最新文章

  1. Android layout_gravity
  2. java前补零工具类_java生成编码工具类,不足补0
  3. CSS样式引入方式和部分CSS样式的设置
  4. php一个入口 nginx 自动带斜线,Nginx 自动加斜杠
  5. STM32使用PWM输入模式测试频率和占空比
  6. 深度学习实践指南(一)—— 卷积和池化
  7. android 坚挺通话广播_关于短信黑名单 BroadCast
  8. centos7 mysql添加密码_centos-在Centos7上更改mysql根密码
  9. 测试基础(三)No Risk, No Test,证实和证伪相结合
  10. display-flex详解
  11. PHPstorm 函数或者方法的注释的时间和用户名,PHPstorm里函数方法的注释是没有动态时间设置的,但是看了PHP file里面有时间日期的注释,而PHP Function Doc Commen
  12. springboot slf4j log4j2 动态创建日志的方法
  13. C语言sin()函数绘制正弦曲线代码(0-2π)
  14. 周报(水管工问题,和图的遍历)
  15. “速课小龙”项目冲刺2
  16. 雷达多普勒频率计算公式_非接触式雷达流速仪在水文测量如何运用
  17. MPC算法学习(1)
  18. 【spring系列】spring依赖注入实现方式(含案例)
  19. 直流稳压电源与信号产生电路(模电速成)
  20. 【庖丁解牛】MySQL编译出现报错 : Could not find rpcgen 解决方案

热门文章

  1. c# asp.net 测试程序执行时间
  2. 如何学习数据库?数据库零基础入门指导
  3. mysql windos安装包_WINDOWS 安装mysql安装包_MySQL
  4. 西门子plc软件 linux,西门子PLC编程软件
  5. 图像与矩阵_Python_No.3
  6. matlab 调用 lingo,lingo和matlab用哪个
  7. 免费将pdf文件转换成word
  8. 软考网络工程师真题讲解
  9. 多用户商城系统三级分销的设计和实现
  10. 平面设计完全手册_平面设计师的三大软件:PS、AI、ID该如何选择?| 平面设计纯干货...