Няшная / Говнокод #11511 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
int enctypex_decoder_rand_validate(unsigned char *validate) {
    int     i,
            rnd;

    rnd = ~time(NULL);
    for(i = 0; i < 8; i++) {
        do {
            rnd = ((rnd * 0x343FD) + 0x269EC3) & 0x7f;
        } while((rnd < 0x21) || (rnd >= 0x7f));
        validate[i] = rnd;
    }
    validate[i] = 0;
    return(i);
}

Запостил: WGH WGH, (Updated )

Комментарии (10) RSS

  • Несмотря на то, что функция заканчивается на validate, она генерирует случайный идентификатор...

    > ~time(NULL)
    time(NULL) недостаточно случаен для сидирования им этого говногенератора? 😉

    P.S. Если не туплю, то данный генератор создает не более 128 различных идентификаторов (а, скорее всего, намного менее).
    Ответить
      • Но здесь же не сложный и запутанный алгоритм. Значит он всегда дает хорошие простые числа.
        Ответить
    • Что-то как-то очень мало... максимально 94 * 8 должно быть, или какие-то комбинации не возможно получить сложением и умножением на эти числа, предположим, только четные или только нечетные (вроде тоже нет, т.как если rnd был четным на предыдущей итерации, то станет нечетным и наоборот.
      Ответить
      • Так тут каждый следующий символ однозначно зависит от предыдущего. Поэтому первый символ однозначно определяет все остальные. А первый символ имеет не более 94 вариантов.

        P.S. Про 128 я конечно ступил... Код генерит не более 94 различных восьмисимвольных строк.
        Ответить

Добавить комментарий

Помни, guest, за тобой могут следить!

    А не использовать ли нам bbcode?


    8