我已经准备好盘子里的东西在我的Android移动应用程序中,我使用不同的第三方Android SDK从相应的外部指纹扫描仪设备中检索指纹(我未使用电话的内置指纹扫描仪。)。我可以在用户注册时以RAW格式将指纹导出并上传到我的PHP服务器,之后在进行验证时,我必须将所有指纹从服务器下载到移动设备,并分别使用SDK进行比较。一切都很好。
我正在寻找
现在,我想要在PHP的服务器端移动所有FP比较逻辑,因此我不必在移动设备上下载所有指纹。我将仅将当前FP上传到服务器,服务器将比较并回复Auth状态,这还将减少我对扫描仪预备SDK的依赖性,以比较不同的扫描仪提供商。这将使我的系统扫描仪制造商独立。
可能的线索我发现有人说,我只需要比较RAW文件的MD5数据,但是我不确定如何确定接近匹配率(例如80%+)被视为匹配。在指纹识别中100%匹配不是实际的事情。
此后,我必须下载所有服务器到手机的指纹,并使用各自的SDK进行比较一对一。
亲爱的上帝,没有。我很高兴您已经确定需要改进。
关于您的问题:
1)指纹是否有任何特定的逻辑,算法或协议比较。
是的,有许多公开的指纹处理算法。这些过程中的许多过程都有免费提供的算法:https://sourceafis.machinezoo.com/
2)是否有可以用于FP的开源PHP库?比较。
也许,一个快速的Google搜索出现了https://github.com/pushcodeveryday/Biometric-Fingerprint-Integration
就MD5或其他基于校验和的方法而言,它们都将保证全部失败,因为为每个身份验证请求捕获的图像将始终相差至少1位。另外,请勿将图像作为base64存储在数据库中……这绝对会毫无理由地将图像大小增加约50%。 RDBMS设计用于组织数据,而不用于文件存储。如果必须使用数据库,请使用怪异的blob来存储二进制数据而不是文本,这就是存在blob类型的原因。
现在我已经解决了您的直接问题,让我们谈谈原因。更具体地说,为什么要在PHP中处理这些指纹呢?在帐户创建/注册过程中,本地(在应用程序中)处理指纹,并使用用户设置应用程序时生成的共享机密授权应用程序会容易得多。
MD5校验和将计入用于生成哈希的元数据(日期,时间等),这对您没有用。如果要生成用于指纹的图像,则可以将其编码为base64,然后将其存储到可以使用PHP轻松处理的数据库中。