前言
最近接触了PC端的指纹识别和加密
先说加密,用的是深思云,购买他们的加密锁可以实现离线开发,因为没有深入接口的开发,这里就不细说了
指纹识别需要电脑有指纹传感器,不同的传感器供应商会提供相应的SDK,开发起来会简单很多。但是,如果换了一台电脑,指纹传感器的型号不同,程序就无法运行了。Windows生物识别框架提供的API可以统一的解决这一问题
Windows生物识别框架文档地址:
Windows 生物识别框架 - Win32 apps | Microsoft Learn
一些经验
文档对客户端的接口都做了比较详细的说明,因为我们使用的是WBF提供的服务,所以我们可以做的事情还是比较局限的,可以实现对指纹的增(winBioEnrollCommit)、删(winBioDeleteTemplate)、查(WinBioEnumEnrollments),这些操作的同步接口都提供了详细的代码,但是从Windows8开始,异步接口有了一些变化,目前也没有研究清楚
如果想要实现更多、详细的功能,可能需要对适配器、专用池进行开发,这部分因为能力有限,我暂时还没有研究清楚,等以后有机会接触再补充吧,没有就算了
辨别指纹的数据结构叫作生物识别模板,这些模板被存储在WINBIO_BIOMETRIC_SUBTYPE中的以下常量中:
**WINBIO\_ANSI\_381\_POS\_RH\_THUMB**
**WINBIO\_ANSI\_381\_POS\_RH\_INDEX\_FINGER**
**WINBIO\_ANSI\_381\_POS\_RH\_MIDDLE\_FINGER**
**WINBIO\_ANSI\_381\_POS\_RH\_RING\_FINGER**
**WINBIO\_ANSI\_381\_POS\_RH\_LITTLE\_FINGER**
**WINBIO\_ANSI\_381\_POS\_LH\_THUMB**
**WINBIO\_ANSI\_381\_POS\_LH\_INDEX\_FINGER**
**WINBIO\_ANSI\_381\_POS\_LH\_MIDDLE\_FINGER**
**WINBIO\_ANSI\_381\_POS\_LH\_RING\_FINGER**
**WINBIO\_ANSI\_381\_RING _POS\_LH\_LITTLE\_FINGER**
据目前测试来看,每个常量值只能存储一个模板,并且同一个指纹只能注册一个模板,另外这些注册的指纹和当前Windows用户注册的指纹是互通的
如果大家想要通过WBF实现指纹登陆,我的一个思路是将WINBIO_BIOMETRIC_SUBTYPE中的10个常量分给不同的用户,这样的局限性是只能创建10个可以指纹登陆的用户,根据目前测试来看,虽然这10个常量对应了不同的手指类型,但似乎并没有什么区别