Tengo esta función de compresión/hash (comprime una cadena en un número corto)
function compress(input) { let output = 0; for (let i=0; i < input.length; i++) { output = (output << 5) - output + input.charCodeAt(i) output &= output; } return output; }Ahora estoy buscando un algoritmo en el que pueda ingresar un número y luego recuperar una cadena (no estoy buscando la cadena original). Este String debería producir el mismo hash al comprimirlo nuevamente.
Ejemplo
let compress1 = compress("Hello") // => 69609650 let deob = expand(compress1) // => ?? let compress2 = compress(deob) // => 69609650 compress1 === compress2 // should be trueUna idea que tuve, en la nube, solo pruebo cadenas aleatorias y luego guardo la salida con la entrada en un mapa de clave-valor, pero esto llevaría algún tiempo. ¿Existe una forma más eficiente de encontrar una cadena que produzca el mismo hash (para un hash dado)?