美文网首页
# android 指纹识别并检测指纹库是否变更

# android 指纹识别并检测指纹库是否变更

作者: justin_crashed | 来源:发表于2020-08-13 11:16 被阅读0次

android API 23时新增的功能,指纹识别

主要类:FingerpringManager

在API28后,FingerpringManager被遗弃,使用BiometricPrompt,此时授权识别的弹窗不能自定义,
只能使用官方统一弹窗,只能设置各个授权文案。各个开发商内部实现可能不一致。

通过只是使用指纹识别,直接使用官方api即可,但出于安全或业务场景需求,很多都需要去检测生物库信息是否变更,
如指纹库在重新指纹识别前是否发生变更,这个官方api就没有提供方法,需要我们自己实现。

检测指纹库是否发生变更

参考:

通过检测密钥查看是否变更(https://www.jianshu.com/p/dbb1a43cfb21)

在API28以前,指纹库信息时可以通过反射获取,获取的信息有指纹id、groupId、指纹名称、指纹个数、设备id等等,

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    Log.d(TAG, "getFingerPrintInfo: ");
    FingerprintManager fingerprintManager = (FingerprintManager) getCurrentActivity().getSystemService(Context.FINGERPRINT_SERVICE);
    try{
        Class clz = Class.forName("android.hardware.fingerprint.FingerprintManager");
        Method method = clz.getDeclaredMethod("getEnrolledFingerprints", new Class[]{});
        method.setAccessible(true);
        Object obj = method.invoke(fingerprintManager, null);
        if (obj != null) {
            Log.e(TAG, "objStr:" + JsonUtils.toJson(obj));
            List<FingerprintBean> list = (List<FingerprintBean>) JsonUtils.fromJson(objStr, new TypeToken<List<FingerprintBean>>(){}.getType());
        }
    }catch (Exception e) {
        e.printStackTrace();
    }
}

而FingerprintBean是这样的:


public class FingerprintBean implements Serializable {

    private static final long serialVersionUID = 1L;
    private long mDeviceId;
    private long mFingerId;
    private long mGroupId;
    private String mName;
}

最理想的方式是我们反射获取到这些指纹库信息,然后将这些信息保存到本地,每次调用指纹识别时,获取当前指纹库信息与之前的指纹库信息比较,
只有不同即可判定指纹库信息变更,
但在实际操作中,发现在手机上获取到的指纹id只是简单的1、2、3即指纹库里的排列顺序,而指纹名称是可以随意更改,groupId、deviceId都为0,
如果使用这些信息去校验,错误率太高。

还有一种方式即是上面参考链接中的,
检测指纹库密钥信息是否变更

但在上面链接那种方法中,有几个问题:
1、增加、删除指纹无法检测
2、使用修改指纹的手指识别后才能检测出修改

于是将反射、密钥检测两者结合,
先反射获取指纹库信息,只是比较指纹库指纹个数,先判断指纹个数是否发生变更,就可知道指纹库信息变更了
如果指纹个数没有变更,再来校验密钥是否发生变化

相关文章

  • # android 指纹识别并检测指纹库是否变更

    android API 23时新增的功能,指纹识别 主要类:FingerpringManager 在API28后,...

  • 指纹识别

    一、 指纹识别接口从Android 6.0开始,Android系统加上了对指纹识别的支持。所有指纹识别的接口都在...

  • 指纹、VR、AR

    ------指纹------优雅实现Android指纹验证安卓指纹识别库(安卓官方 + 三星 SDK + 魅族 S...

  • 安卓指纹+密码支付(解锁)仿支付宝Demo

    1.前言 Google从Android6.0(api23)就开始提供标准指纹识别支持,并对外提供指纹识别相关的接口...

  • IOS指纹识别调用

    官方文档 指纹识别主要的目的应该是判断当前用户是否机主 1 首先需要引入指纹识别库 2 引入库 3 关键代码 5 ...

  • 指纹识别

    指纹识别,iPhone5S以后推出iOS 8.0 才推出指纹识别SDK 导入头文件 然后,判断设备是否支持指纹识别...

  • 2018-03-05

    Android指纹密码 使用场景以及方向 指纹解锁,在支持指纹识别的手机中,几乎每个支持指纹识别芯片的手机都支持指...

  • 指纹识别-Android

    指纹识别-Android @(Android进阶资料)[Android, 学习, 读书笔记, Markdown]指...

  • Android指纹从入门到"放弃"

    Android指纹从入门到"放弃" 一、背景 Android在23(Android M)上新增了对指纹识别的硬件支...

  • Android三星指纹识别简单使用

    前言:对于指纹识别,大多数开发者可能想到的是API 23以后,Android自带的指纹识别sdk,Google对于...

网友评论

      本文标题:# android 指纹识别并检测指纹库是否变更

      本文链接:https://www.haomeiwen.com/subject/bxjbdktx.html