- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
public override int GetHashCode()
{
if (this.FileName == null)
{
return base.GetHashCode();
}
return this.FileName.GetHashCode() + 13;
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+136
public override int GetHashCode()
{
if (this.FileName == null)
{
return base.GetHashCode();
}
return this.FileName.GetHashCode() + 13;
}
почему 13?
Главная проблема - нужна достаточная квалификация, в противном случае можно серьёзно ослабить алгоритм, как в плане ускорения, так и при порождении коллизий.
К примеру - просто сменить стартовые значения в MD5. По идее стойкость от этого не упадет, а вот все существующие тулзы обломают зубы на таком мд5.
Тот же Брюс Шнайер советовал не придумывать свои алгоритмы, если нет соответствующих знаний, а использовать надежные, проверенные временем алгоритмы.
Хотя может быть в мд5 и правда есть какая-то лазейка связанная с IV, мало ли... Если статейка потом попадется - киньте плиз, интересно будет почитать.
Ну вот кто им мешал сделать вместо 56-бит, стандартные 64?
Первый блин комом.
>нормально работают при любом векторе инициализации
Что это значит?
Если речь о таблицах подстановки, то это неправда. Есть очень слабые варианты - их даже можно подобрать самому.
Более того ходят слухи что стандартные таблицы DES и ГОСТ были сделаны таким образом, что там есть известная только избранным дырка облегчающая подбор.
P.S. Ну я тут конечно не совсем корректно выразился - на IV блочному алгоритму шифрования похуй, ибо IV работает на чуть более высоком уровне - режиме шифрования.
как раз съел бутер с рыбой
Рандомное простое число, чтобы хеш файла не совпадал с хешем строки с его именем.
Задача на дом:
Почему взяты 1231 и 1237?
Потому, что они содержатся в числе пи?
фигню сморозил...