Чем реально отличаются MD5, SHA-1 и SHA-256 и когда что выбирать?
Вопрос по хешам: часто вижу, как люди кидаются MD5, SHA-1 и SHA-256 в одну кучу, но на практике это сильно разные штуки. MD5 — старый и быстрый, но уже давно не подходит там, где нужна хоть какая-то безопасность, потому что коллизии просто валятся. SHA-1 чуть серьезнее, но тоже устаревший и в задачах с защитой уже не рекомендуется. SHA-256 — самый популярный сейчас, потому что балансит скорость и надежность, его вполне хватает для большинства задач, включая сертификаты и подписи.
Если нужно просто быстро проверить целостность файла или что-то типа контрольной суммы — MD5 легко и быстро. Но с точки зрения криптографии — это лотерея, лучше сразу смотреть в сторону SHA-256. Когда работаешь с паролями, хешем пароля один на один не обойтись, там нужны соли и более сложные алгоритмы вроде bcrypt, scrypt или Argon2.
Кто чем пользуется? В каких ситуациях MD5 ещё терпим, а когда без SHA-256 никак? У кого есть опыт с переходом с SHA-1 на SHA-256, ощутили реальную разницу по времени?