Цифровая Персона - проверка биометрии, приносящая неправильные данные (информация от другого пользователя) - PullRequest
1 голос
/ 25 мая 2019

Мне в основном нужно приносить информацию от пользователей, использующих биометрию, для этого я использую биометрический считыватель цифрового человека (U.are.U 4500). Проблема в том, что иногда случается, что информация поступает от другого пользователя, в случае, если я положу палец на считыватель, она читается, и вместо того, чтобы вернуть мои данные, она возвращается от другого пользователя. Я заметил одну вещь, я сохраняю биометрию в байтовом формате ([байт]). Когда я собираюсь зарегистрировать биометрию, мой байтовый массив обычно состоит из 1000 элементов. Когда я делаю сравнение, байты обычно возвращаются из базы данных, но массив байтов, который я буду использовать для сравнения с базой данных, равен 300. Это может звучать как чушь, но есть ли какие-то помехи? В любом случае, я сделаю источник доступным! Спасибо за вашу помощь.

О мелких деталях байтов, которые я заметил:

Байт в регистре:

enter image description here

байт в чеке:

enter image description here

Я попытался опубликовать изображения здесь, но я был заблокирован переполнением стека:)

Регистрация биометрических:

memoryTemplate = new MemoryStream();
Template.Serialize(memoryTemplate);
memoryTemplate.Position = 0;
brReader = new BinaryReader(memoryTemplate);
serializedTemplate = brReader.ReadBytes((Int32)memoryTemplate.Length);

DALUsuario usuario = new DALUsuario();
//I execute the method to register biometrics
usuario.CadastrarBiometria(Apoio.stCodUsuario, Finger, serializedTemplate);

// usuario.CadastrarBiometria:

   con = new SqlConnection();
   apoio = new Apoio();
   con = apoio.conexaoBD(con);
   command = new StringBuilder();
   fkMao = VerificarMao(fkDedo);
   command.Append("INSERT INTO TBL_BIOMETRIA (FK_USUARIO, FK_DEDO, FK_MAO, BIOMETRIA) ");
   command.Append("VALUES (@idUser, @fkDedo, @fkMao, @Biometria)");
   cmd = new SqlCommand(command.ToString(), con);
   cmd.Parameters.AddWithValue("@IdUser", idUsuario);
   cmd.Parameters.AddWithValue("@fkDedo", fkDedo);
   cmd.Parameters.AddWithValue("@fkMao", fkMao);
   cmd.Parameters.AddWithValue("@Biometria", Template);
   cmd.ExecuteNonQuery();

// Проверка биометрии

private void VerificationControl1_OnComplete(object Control, DPFP.FeatureSet FeatureSet, ref DPFP.Gui.EventHandlerStatus EventHandlerStatus) {

    DPFP.Verification.Verification ver = new DPFP.Verification.Verification();
    DPFP.Verification.Verification.Result res = new DPFP.Verification.Verification.Result();

    Usuario user = null;
    DALUsuario dalUser = null;
    // Compare feature set with all stored templates.
    user = new Usuario();
    dalUser = new DALUsuario();

    // I execute the method that takes the user's biometry and compares it with the one of the database
    user = dalUser.RetornaBiometria(FeatureSet);
}

// dalUser.RetornaBiometria:

    while (reader.Read()) {
    user.iCodUsuario = Convert.ToInt32(reader["FK_USUARIO"]);
    user.Biometria = (byte[]) reader["BIOMETRIA"];
    memoryStream = new MemoryStream(user.Biometria);
    DPFP.Template tmpObj = new DPFP.Template();
    tmpObj.DeSerialize(memoryStream);
    DPFP.Verification.Verification.Result result = new DPFP.Verification.Verification.Result();

    // I MAKE COMPARISON OF THE USER'S BIOMETRY WITH THE BIOMETRIES REGISTERED IN THE DATABASE
    ver.Verify(FeatureSet, tmpObj, ref res);
    Data.IsFeatureSetMatched = res.Verified;
    Data.FalseAcceptRate = res.FARAchieved;
    if (res.Verified) {
        break; // success
    }
    fpTemp = null;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...