第3章 PIN码设置、加密、存储

1.前提介绍:该密码保存在/data/misc/keystore/user_0/.masterkey,可在adb shell后,ls –al /data/misc/keystore/user_0/.masterkey查看文件存在与否。

下面讲述的是,从设置点击 安全-屏幕锁定方式,设定pin-设置pin码,通知-完成,到pin如何进行加密和存储的。完成这个button是一个设置中通用的一个按键,不再通知界面的布局中。

2. 这个按键响应ChooseLockPassword.java的onClick方法,执行以下代码:

图3.1执行onclick()

进入handleNext()方法,当确认密码正确时,执行startSaveFinsh操作

图3.2执行startSaveAndFinsh()

看一下startSaveFinsh()函数的具体执行过程,在该过程中会调用SaveAndFinishWorker类的start方法。

图3.3在该过程中会调用ChooseLockPassword.java文件中的SaveAndFinishWorker的start()方法

3. 进入ChooseLockPassword.java文件中的SaveAndFinishWorker类里面执行start()方法,看一下start方法的详细内容。

SaveAndFinishWorker继承于SaveChosenLockWorkerBase类,在SaveAndFinishWorker的satrt方法的最后会执行staart(),这个start是SaveChosenLockWorkerBase类里面的方法。

图3.4 ChooseLockPassword.java文件的SaveAndFinishWorker类里执行start()

  1. 进入SaveChosenLockWorkerBase类查看具体的start方法。在该start方法中会调用ChooseLockPassword 类的saveAndVerifyInBackground()方法。

图3.5在该start方法中会结束ChooseLockPassword 的saveAndVerifyInBackground()

  1. ChooseLockPassword 类的saveAndVerifyInBackground(),在这个方法里面会调用LockPatternUtils.java文件的saveLockPassword()方法

图3.6调用LockPatternUtils.java文件的saveLockPassword()方法

  1. 看具体的LockPatternUtils.java文件的saveLockPassword()方法。进入该方法来保存密码。通过getLockSettings()间接调用LockSettingsService的setLockCredential方法。

saveLockPassword中会做一次密码检查是否有空或者是否是4位,pin只能是4位,再传pin password,类型,userhandle下去。

图3.7通过getLockSettings()间接调用LockSettingsService的setLockCredential方法

a. LockPatternUtils.java文件的getLockSettings()方法。

(在LockSettingsService类的onstart方法中有把mLockSettingService赋值给lock_settings,然后在LockPatternUtils中对其进行调用)。

实际上是:通过AIDL,调用的是 LockSettingsService类的service端的setLockCredential()方法。

图3.8getLockSettings调用的是 LockSettingsService类的lock_settings

b. 通过AIDL,调用的是 LockSettingsService类service端的setLockCredential方法。LockSettingsService类的onstart方法中有把mLockSettingService赋值给lock_settings,然后在第8步被调用了。

图3.9 LockSettingsService类中的start方法

  1. LockSettingsService.java类。

在第7步中,LockPatternUtils.java文件的setLockCredential()方法中有如下代码:getLockSettings().setLockCredential(password, CREDENTIAL_TYPE_PASSWORD, savedPassword,  requestedQuality, userHandle)。

注意:验证都是经过LockSettingsService,然后再到GateKeeper。

所以:通过AIDL,调用的是 LockSettingsService.java service端的setLockCredential方法。

setLockCredential方法会调用setLockCredentialInternal()方法。

  1. 看一下LockSettingsService的setLockCredential方法:

图3.10调用setLockCredentialInternal()方法

  1. 看一下LockSettingsService的setLockCredentialInternal()方法,在做writePasswordHash之前,有执行enrollCredential。

图3.11把pin存储起来

第3章 PIN码设置、加密、存储相关推荐

  1. 关于重装Win10系统卡死在PIN码设置步骤

    ctrl + shift + F3

  2. 电脑pin码忘了登录不进系统_智慧登录:玩转Windows Hello!

    自PC诞生以来,它给我们的工作.生活带来了极大便利.但同时也带来了一些安全隐患.因为我们习惯了把重要资料存储在电脑中,诸如私人照片.商业资料.财务数据,甚至各种账户密码等.一旦被他人使用,后果不堪设想 ...

  3. 密码忘了怎么办?——如何找回多可系统的加密存储密码

    今天有用户来电话说,他忘记加密存储的密码了,登不进系统,怎么办? 嗯,太正常了,非常理解,对我们大多数人来说,密码就是用来忘记的... 密码忘了不可怕,只要能找回就可以! 在多可文档管理系统里,你可以 ...

  4. Windows10系统账号密码太复杂,PIN密码设置

    以前我们登录Windows系统,一般都是采用输入密码的方式,没有密码不安全,密码简单了更不安全.在Windows 10系统中,微软加入了PIN码简单数字登录.画图登录等简单化登录方式,更融入了便捷的W ...

  5. 3-AT命令交互之-PIN码

    PIN码,全称Personal Identification Number.就是SIM卡的个人识别密码.PUK码全称PIN Unlocking Key,是PIN码的解锁码,PIN码一般在修改前原始密码 ...

  6. bluez 设置绑定pin码_国家工信部紧急提醒:一定要设置这个密码!

    近日,一名网友分享了自己的亲身经历,因为手机被盗,不法分子通过手机上的App,窃取他的个人信息,进而申请网贷,造成财产损失.该文章通过互联网大量转发,引发网民对手机个人信息保护和财产安全的担忧. 针对 ...

  7. bluez 设置绑定pin码_国家工信部重要提醒:一定要设置这个密码!

    近日,一名网友分享了自己的亲身经历,因为手机被盗,不法分子通过手机上的App,窃取他的个人信息,进而申请网贷,造成财产损失.该文章通过互联网大量转发,引发网民对手机个人信息保护和财产安全的担忧. 针对 ...

  8. SIM卡PIN码到底有什么用?华为手机如何设置SIM卡锁?

    最近看到一篇热文<一部手机失窃而揭露的窃取个人信息实现资金盗取的黑色产业链>,一个自称是信息安全的专家,自述因为手机失窃,SIM卡挂失失败遭遇手机黑产,个人身份信息.各种支付账号密码等信息 ...

  9. pe本地计算机策略,Win10怎么设置PIN码|本地组策略编辑器设置PIN复杂性方法

    Win10中,PIN码是一个额外的安全功能,可以保护用户账户以及计算机内的敏感数据,通常情况下,PIN码的最短位数是4位,如果希望PIN码更加的安全,可以设置一个超长位数的PIN码.这篇文章就是PE吧 ...

最新文章

  1. 【怎样写代码】向现有类型“添加”方法 -- 扩展方法(一):扩展方法概述
  2. 使用Visual Studio宏来自动生成代码 [ Visual Studio | 宏 | 自动生成代码 ]
  3. vivado----fpga硬件调试 (四)----mark_debug
  4. Java Private、protected、public、以及无修饰符的可见范围
  5. linux screen 配置
  6. VC 文件操作大全,打开,保存,复制,删除,查找等
  7. 【python数据挖掘课程】十八.线性回归及多项式回归分析四个案例分享
  8. pythoncharm安装时出错误_python01:pycharm中安装包时所遇到的问题
  9. linux 文件差异备份,Linux使用 tar命令-g参数进行增量+差异备份、还原文件
  10. python编程(数据库操作)
  11. lingo软件的基本使用方法_(PS软件)PHOTOSHOP基础操作和基本工具的使用
  12. Azure实践之通过automation管理资产
  13. 扣扣机器人唱歌_qq小冰机器人唱歌脚本-qq群机器人小冰无限唱歌插件下载v6.7.1 安卓版-腾牛安卓网...
  14. ps 去除gif水印
  15. IsKindOf的用法简介
  16. python简易搭建环境_在Windows上搭建Python2.7环境
  17. 查询递归表SQL,分类表查询,递归表数据结构转平级查询优化SQL
  18. 定制NFC卡片/ntag213芯片卡/手机NFC感应卡片
  19. python的pandas库题1
  20. MOTOMAN机器人网络控制的实现

热门文章

  1. 《天天数学》连载66:三月六日
  2. 麒麟系统安装python3
  3. python 安装 cv2 失败
  4. echarts中横坐标值显示不全(自动隐藏)解决方案
  5. 仿网易新闻栏目管理(频道管理)功能
  6. Linux 批量删除 修改日期大于某一天的文件
  7. 3Dmax如何根据固定比例放大缩小
  8. 服务器硬盘是什么接口类型 服务器硬盘和普通硬盘区别
  9. iOS 6.1锁屏音乐控制界面升级 玩转重力感应
  10. 梨视频:基于阿里云E-MapReduce搭建视频推荐系统实践