Контрольная сумма SHA1 с K ведущими нулями - PullRequest
0 голосов
/ 15 марта 2020

Я пытаюсь найти супер эффективный способ для генерации случайной строки для уравнения ниже:

checkSum = SHA1(fixed_string + random_string)

Контрольная сумма должна иметь k ведущих нулей, чтобы удовлетворять конечному условию. Текущая реализация использует методологию грубой силы в сочетании с генератором случайной строки . Но этот метод является неэффективным и отнимает много времени, если K больше, чем 7 .

static void
gen_random(char *s) {
    static const char alphanum[] =
        "0123456789"
        "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
        "abcdefghijklmnopqrstuvwxyz";

    for (size_t i = 0; i < LENGTH - 1; ++i) {
        s[i] = alphanum[rand() % (sizeof(alphanum) - 1)];
    }
}

Есть у кого-нибудь идеи разработать эффективный алгоритм генерации случайная строка для эффективной обработки условия? Другой вопрос касается длины (fixed_string + random_string) . Какова наилучшая длина для правильной обработки контрольной суммы SHA1?

Спасибо

1 Ответ

0 голосов
/ 15 марта 2020

Если я правильно понимаю, вы пытаетесь подтвердить правильность реализации SHA1. Для этого я предлагаю использовать тестовые векторы из NIST

Существуют тестовые векторы для байтовой и битовой реализаций.

Пример тестового вектора из shabytetestvectors/SHA1ShortMsg.rsp файл

Len = 152
Msg = 148de640f3c11591a6f8c5c48632c5fb79d3b7
MD = b47be2c64124fa9a124a887af9551a74354ca411
...