2011-02-07 2 views
3

Если мне нужна более короткая контрольная сумма MD5, следует ли использовать обычную и использовать первую половину или вторую половину? Или это даже имеет значение?Самая эффективная подстрока контрольной суммы MD5

(очевидно, он перестанет быть MD5, это будет просто контрольная сумма)

ответ

2

Это не имеет значения, но я думаю, что очень трудно об этом: вы будете значительно увеличить шансы столкновение (два разных бита данных с одной и той же контрольной суммой).

+0

Спасибо всем. Каждый ответ кажется одинаково полезным, я принимаю это, потому что это первый ответ, и потому, что у Дэна только 13 репутации. Это подсказывает масштаб, по крайней мере, я не разорван. –

2

Это не должно иметь значения. Вообще говоря, вся контрольная сумма изменяется для каждого входного байта. Но если вы не можете решить, почему не xor первая половина со второй? :-)

2

Используйте некоторую функцию хэширования CNC, если вам нужна короткая строка. Имейте в виду, что это не очень безопасно, но это будет все же лучше, чем взять половину MD5.

+0

Почему это было бы лучше? Даже усеченный MD5 будет иметь лучшие свойства распределения и безопасности, чем простой CRC. Единственным преимуществом типичного CRC является производительность. – CodesInChaos

+0

Поддержание работоспособности! Это не было бы чем-то особенным, которое никто другой разработчик не поймет, увидев странную половину строки MD5. Если вам нужна более короткая строка, чем MD5, вы должны пойти со стандартной реализацией, которая была создана для создания короткой строки хэширования. Только мои 2 цента;) –

Смежные вопросы