| ||||
| ||||
Сервер приложений должен проверяет подпись над большим количеством доккументов. Для теста вызываю проверку подписи 1000 раз при уже подсчитанном хэше. По времени это занимает ~12-15 сек на pentium4 2,4 МГц. Хотелось бы ускорить проверку в несколько раз. Возможно ли это, я что-то не так делаю или это ограничение по скорости вызванно сложностью алгоритма? я делаю так: ... // уже подсчитан хэш, вызываем проверку подписи хэша for (int i = 0; i < 1000; i++) if (hash.VerifyHashSign(cer, sign)) return; ... DWORD CryptoHash::VerifyHashSign(Certificate& VerifyCert, byte_buffer /*in*/ &sign) { CryptoKey pubKey; if (!CryptImportPublicKeyInfo(provider.Handle(), X509_ASN_ENCODING || PKCS_7_ASN_ENCODING, &VerifyCert.GetContext()->pCertInfo->SubjectPublicKeyInfo, &pubKey.Handle())) return HandleError(GetLastError(), ERR_PUBLIC_KEY); if (!CryptVerifySignature(hHash, sign.c_ptr(), sign.size(), pubKey.Handle(), 0, 0)) { DWORD dwErr = GetLastError(); if (NTE_BAD_SIGNATURE == dwErr) return HandleError(dwErr, ERR_BAD_SIGNATURE); return HandleError(dwErr, ERR_VERIFY_SIGN); } return 0; } | ||||
Ответы: | ||||
| ||||
Сходу проверил на 2.4 ГГц Xeon на 3.0.3294 KC2 Debug 650 подписей/сек 250 проверок/сек это без учёта времени импорта, импорт ГОСТ 34.10-2001 ключей быстрый, ГОСТ 34.10-94 - долгий. | ||||