我正在开发Java的生物识别考勤系统,MySQL用于设备digitalPersona。但是在指纹验证期间,每当我显示不同的数据时,我从数据库中检索指纹数据(即BLOB)。最终结果显示"未经验证"。以下是我写的用于验证的代码。
String query = "select * from employee";
try {
res = conn.getRecords(query, con);
while(res.next()) {
**System.out.println("Name : "+res.getString(1));**
Blob data1 =res.getBlob("fingerprint");
**System.out.println("Fingerprint data from DB: "+data1);**
int blobLengh=(int)data1.length();
byte data[]=data1.getBytes(1, blobLengh);
DPFPTemplate t = DPFPGlobal.getTemplateFactory().createTemplate();
t.deserialize(data);
//setTemplate(t);
System.out.println("from DB: "+t);
System.out.println("Current Finger: "+features);
DPFPVerificationResult result;
result = verificator.verify(features,t);
updateStatus(result.getFalseAcceptRate());
//System.out.println(result.isVerified());
if (result.isVerified()){
System.out.println("The fingerprint was VERIFIED.");
System.exit(0);
}
else{
System.out.println("The fingerprint was NOT VERIFIED.");
}
}
} catch (SQLException ex) {
//Logger.getLogger(AlreadyRegisteredDetails.class.getName()).log(Level.SEVERE, null, ex);
ex.printStackTrace();
}
每次我扫描手指输出就像那样
使用指纹识别器扫描指纹。
姓名:amar
数据库中的指纹数据:[B @ 872ebe
姓名:amar
数据库中的指纹数据:[B @ f029f6
姓名:amar
数据库中的指纹数据:[B @ 1da6b61
姓名:amar
数据库中的指纹数据:[B @ bc2ca4
姓名:amar
数据库中的指纹数据:[B @ 6d7f85
答案 0 :(得分:0)
查看文档,验证API的用法似乎是正确的。唯一可能的原因是FAR非常低。要确保问题,请将您的FAR设置为PROBABILITY_ONE并重复实验。如果您确实获得了“验证”结果,请将FAR慢慢降低到合理的值(至少为MEDIUM_SECURITY_FAR)。