Ответ
Для хеширования длинных ссылок лучше использовать криптографические хеш-функции, которые дают короткий и уникальный результат. Оптимальные варианты:
- SHA-256 – надежный, но длинный (64 символа). Пример:
const hash = crypto.createHash('sha256').update(url).digest('hex').substring(0, 8);
- MurmurHash – не криптографический, но быстрый и с хорошим распределением. Пример:
const hash = murmurhash.v3(url).toString(36).slice(0, 8);
- Base64 от MD5 – компактный (22 символа), но MD5 считается устаревшим:
const hash = crypto.createHash('md5').update(url).digest('base64url');
Для коротких URL обычно берут первые 6-8 символов хеша. Важно проверять коллизии в БД перед сохранением.