Я ищу способ хешировать строку для динамического количества символов. Я не хочу обрезать существующий хэш (например, SHA), а сгенерировать хэш, для которого вы можете указать количество выходных символов. Это также должно работать, если ввод меньше количества символов. Он не обязательно должен быть криптографическим, ему нужно только гарантировать один и тот же хэш для одного и того же ввода. Я просматривал хеш-функции в вики, но все они, похоже, имеют фиксированную длину динамической длины в зависимости от ввода.
Алгоритм хеширования строки до динамического количества символов
Ответы (1)
Возможно, вам нужны Расширяемые функции вывода (XOF)!
Эти хеш-функции не имеют предопределенной длины вывода и могут использовать для построения функции губки.
Семейство SHA-3 состоит из четырех криптографических хеш-функций, [...] и двух функций расширяемого вывода (XOF), называемых SHAKE128 и SHAKE256.
Вы можете попробовать оба варианта на странице https://emn178.github.io/online-tools/. Для выходных битов выберите желаемое число или символы.
Для реализации Java см. криптобиблиотеку Bouncy Castle, которая поддерживает оба алгоритма https://www.bouncycastle.org/specifications.html
Но помните о коллизиях, если длина хеша слишком мала.
person
hans
schedule
14.03.2019
Спасибо @hans, это выглядит многообещающе!
- person The Cookies Dog; 14.03.2019
hashA + hashB + hashC + ...
всегда должно равняться заданной длине, поэтому вы хотите сделать длину каждого хэша динамической, чтобы всегда достигать общей длины? … Я бы сначала пошел дальше и спросил, для чего именно вам нужен это. Убедитесь, что у вас нет проблемы XY. - person deceze♦   schedule 12.03.2019