大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
在Android开发中,经常要获取sha1证书指纹。
创新互联专注为客户提供全方位的互联网综合服务,包含不限于成都网站设计、网站制作、岗巴网络推广、重庆小程序开发公司、岗巴网络营销、岗巴企业策划、岗巴品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联为所有大学生创业者提供岗巴建站搭建服务,24小时服务热线:028-86922220,官方网址:www.cdcxhl.com
例如:在嵌入高德地图的时候,就需要使用这个东东。
这个东东在Eclipse中可以直接获取到,但是在AndroidStudio中,
并没有直接提供,需要通过别的手段手动获取。
我们可以使用 Java 的一个工具: keytool 来获取这个值。
keytool 是jdk提供的一个工具,只要你的java环境变量配置的ok,
直接在命令行输入 keytool 就可以执行这个命令。
获取sha1的命令为:
具体获取方法,看下图:
android API 23时新增的功能,指纹识别
主要类:FingerpringManager
在API28后,FingerpringManager被遗弃,使用BiometricPrompt,此时授权识别的弹窗不能自定义,
只能使用官方统一弹窗,只能设置各个授权文案。各个开发商内部实现可能不一致。
通过只是使用指纹识别,直接使用官方api即可,但出于安全或业务场景需求,很多都需要去检测生物库信息是否变更,
如指纹库在重新指纹识别前是否发生变更,这个官方api就没有提供方法,需要我们自己实现。
参考:
通过检测密钥查看是否变更( )
在API28以前,指纹库信息时可以通过反射获取,获取的信息有指纹id、groupId、指纹名称、指纹个数、设备id等等,
而FingerprintBean是这样的:
最理想的方式是我们反射获取到这些指纹库信息,然后将这些信息保存到本地,每次调用指纹识别时,获取当前指纹库信息与之前的指纹库信息比较,
只有不同即可判定指纹库信息变更,
但在实际操作中,发现在手机上获取到的指纹id只是简单的1、2、3即指纹库里的排列顺序,而指纹名称是可以随意更改,groupId、deviceId都为0,
如果使用这些信息去校验,错误率太高。
还有一种方式即是上面参考链接中的,
检测指纹库密钥信息是否变更
但在上面链接那种方法中,有几个问题:
1、增加、删除指纹无法检测
2、使用修改指纹的手指识别后才能检测出修改
于是将反射、密钥检测两者结合,
先反射获取指纹库信息,只是比较指纹库指纹个数,先判断指纹个数是否发生变更,就可知道指纹库信息变更了
如果指纹个数没有变更,再来校验密钥是否发生变化
背面指纹识别方案是为了不破坏手机屏幕的完整性和一体性,为了提升手机屏幕的屏占比。随着技术的发展,现在已经开发出了屏下指纹模组识别技术,在手机屏幕内部装置指纹模组,这样既不会破坏屏幕的完整,使用也更方便。手机指纹模组是由外圈、涂层、传感器、驱动芯片、FPCBA、PSA、连接器这几个部分组成的。手机指纹模组出厂前需要进行质量测试、性能测试,测试中要用到连接测试电路并与电子芯片匹配的测试针模组。弹片微针模组具有稳定的导通作用,可通过的电流最高能达到50A!电流传输过程电阻恒定、电性稳定,无电流衰减、无卡pin、断针,有着可靠的解决方案。
1. 6.0+
2.手机里至少要有一个已经录入的指纹
需要指纹权限:uses-permissionandroid:name="android.permission.USE_FINGERPRINT"/
人脸识别可以引入虹软的sdk
主要介绍一下FingerprintManager类,提供类三个方法
第一个方法:启动指纹识别
第二个方法:判断手机里面是否有已经有录入的指纹(至少得有一个)
第三个方法:判断手机是否有指纹感应区(硬件支持)
这里需要注意一下,FingerprintManager对象的isHardwareDetected()方法和hasEnrolledFingerprints()方法需要API级别为23及以上,如果你的API级别小于23,那就得加上@TargetApi(23)
1.FingerPrintManager.AuthenticationCallback:
在验证时传入该接口,通过该接口来返回验证指纹的结果
2.FingerPrintManager.AuthenticationResult:
当指纹验证正确时,接口里返回的参数
3.FingerPrintManager.CryptoObject:
由FingerPrintManager支持的封装加密对象的类
我们将指纹识别的CallBack绑定到FingerprintManager中,以获得指纹识别的结果。这就得引入上面图片中FingerprintManager的第一个方法:
public void authenticate(FingerprintManager.CryptoObject crypto,CancellationSignal cancel,int flags,FingerprintManager.AuthenticationCallback callback,Handler handler)
可以看到,这个方法中传递了一个AuthenticationCallback,用于获取指纹识别结果 ,传递了一个CancellationSignal。至此,指纹识别已经开启了。
取消指纹识别很简单,authenticate方法中的第二个参数是一个CancellationSignal对象,这个对象就是用来维护取消操作的,这些操作包括取消监听和设定取消回调等。所以,如果要取消,这个参数就不能传Null。
取消指纹识别 mCancellationSignal.cancel();
取消之后会执行的方法是onAuthenticationError()
1.使用密码登录成功后,去判断设备是否支持指纹/人脸登录,如果支持可以让用户自行选择后续是否需要指纹/人脸登录
2.判断用户指纹/人脸验证是否成功
3.生成加密字符串 可以用sp存储
4.指纹/人脸登录时验证上次加密的字符串
相应的流程图