После чтения темы "MD5 действительно это плохо", я думал о лучшем решении для генерации хешей. Есть ли лучшие решения как Adler
, CRC32
или SHA1
? Или они повреждаются также?
CRC32 - это, вероятно, худшее, что можно использовать для паролей (кроме, может быть, crc16 :). Циклические проверки избыточности служат для обнаружения того, что сообщение было повреждено в результате естественных причин, и их коллизии можно тривиально генерировать, используя только алгебру. SHA0 и SHA1 также нарушены, хотя в отличие от md5() никто не генерировал коллизию SHA1, но считается, что это вычислительно осуществимо с нашей нынешней технологией.
Следует использовать любой член семейства SHA-2. Sha-256 хорош, SHA-512, вероятно, больше, чем вам нужно. NIST сейчас проводит конкурс на SHA-3, и он будет завершен где-то в 2012 году. (Skein for the win!)
SHA1 имеет несколько теоретических атак, но, AFAIK, до сих пор нет ничего практического, что позволило бы вам сломать его.
SHA2 пока остается неизменным.
Если вы ищете криптографическую хеш-функцию, Адлер и CRC32 действительно плохая идея . SHA-1 тоже уже взломан, но гораздо менее опасным способом, чем MD5. Однако это, вероятно, изменится в будущем.
На данный момент, кажется, единственный разумный выбор - использовать SHA-256, возможно, усекая дайджест до желаемой длины.