например 8 символов и алфавитом [a-zA-Z0-9]. Нужно чтобы короткую ссылку было почти невозможно перебрать. Генерить рандомно код и каждый раз проверять его на коллизии в бд не очень хочется. Насколько понимаю, решение в том, чтобы завести какой-то счетчик, который каждый раз увеличивать и это значение прогонять через какое-либо поточное шифрование вроде RC4, только он ненадеждный. В какую сторону посоветовали бы копать? Или может есть более интересный алгоритм?
как-то заморочно
(Math.trunc(Date.now()/100)).toString(24)
Тупая идея, конечно var current_date = (new Date()).valueOf().toString(); var random = Math.random().toString(); crypto.createHash('sha1').update(current_date + random).digest('hex'); И потом вырывай из рандомной части 8 символов
Рандомная соль + шифрование?
возможно тебе бы подошла вот эта библиотека https://hashids.org/ он генерирует хеш из чисел и заявляет, что коллизий не будет
Обсуждают сегодня