Использование функции GrdTRU_DecryptQuestionEx позволяет получить число-вопрос в расшифрованном виде и убедиться в том, что оно действительно было сгенерировано на ключе с ID равным dwID и Public Code равным dwPublic. Если число-вопрос расшифровано правильно и проверка подлинности прошла успешно, функция возвращает GrdE_OK.
Расшифрованное число-вопрос помещается в тот же буфер pQuestion, в котором находилось зашифрованное число-вопрос. Расшифрованное число-вопрос необходимо для генерации ответа, поэтому его нужно сохранить для дальнейшего использования.
Расшифрование числа-вопроса производится аппаратным алгоритмом типа GSII64 (AES128) с номером, задаваемым dwAlgoNum_Decrypt. На момент расшифровывания этот алгоритм должен быть создан в ключе, находящемся у разработчика. В качестве определителя должен использоваться секретный 128-битовый ключ, который был сгенерирован и прошит в ключ удаленного пользователя при предпродажной подготовке функцией GrdTRU_SetKey для ключа с ID, равным dwID. При использовании GRDUTIL этот ключ берется из базы данных.
Проверка подлинности числа-вопроса производится аппаратным алгоритмом типа Hash64 (SHA256) с номером dwAlgoNum_Hash. На момент проверки этот алгоритм должен быть создан в ключе, находящемся у разработчика. В качестве определителя должен использоваться секретный 128-битовый ключ, который был сгенерирован и прошит в ключ удаленного пользователя при предпродажной подготовке функцией GrdTRU_SetKey для ключа с ID равным dwID. При использовании GRDUTIL этот ключ берется из базы данных.
Рабочий ключ, находящийся у разработчика, не обязательно должен быть инициализирован также функцией GrdTRU_SetKey с секретным ключом, таким же как у удаленного пользователя. Все преобразования делаются на заранее запрограммированных алгоритмах, номера которых указываются в параметрах указываемых в параметрах dwAlgoNum_Decrypt и dwAlgoNum_Hash.