cómo acortar la url en un enfoque matemático

Estoy buscando la posibilidad de acortar / encriptar una url que tendrá de 150 a 250 caracteres de longitud hasta un máximo de 12 caracteres utilizando un algorithm. Inicialmente estoy dudando de que sea posible, pero quería aprovechar las grandes mentes de StackOverflow 🙂

el algorithm debe ser uno que se pueda escribir en asp clásico, sql, c #, vb o foxpro u otro idioma.

¿Es eso posible incluso sin un enfoque centrado en la database?

Estaba leyendo aquí que AES en modo CFB, hará un encryption de flujo y la longitud de salida será la misma que la longitud de input. ¿Hay alguna forma de acortarlo aún más?

La respuesta, como siempre, es "depende". Hay una teoría matemática que habla sobre el "contenido de información" de un montón de datos. Si tus datos son originalmente strings como esta:

lleAgByD2rREjzqj85g68207NsjspdINfPRNvU9udgWw7y4qXh0EQLSy0yEi2 

entonces el contenido de la información es mucho mayor que si tus cadenas se ven así:

 one zero one one zero one zero zero one zero one one zero one 

a pesar de que las strings son en realidad de la misma longitud. Con la compression, puede networkingucir el número de bits necesarios para express el mismo significado, pero solo hasta un punto. Ese punto depende del contenido de la información del post original.

Me parece poco probable que su cadena de 150 a 250 caracteres tenga tan poco contenido de información que pueda ser efectivamente comprimida hasta 12 caracteres. Puede que tenga que almacenar los datos más largos en la database y asignar una "key" más corta a cada elemento de datos.

Para leer más, un lugar para comenzar es el artículo de Wikipedia sobre la teoría de la información .

¿Tu objective principal es acortar o encriptar? Probablemente puedas especializar un algorithm de compression lo suficiente como para almacenar un URL de juego de caracteres conocido de manera espectacular, pero eso no sería efectivo para propósitos de encriptación. Dudo mucho que pueda get un algorithm de encriptación criptográficamente sólido para lograr el nivel de compression especificado, sin mencionar que no está discutiendo las longitudes de key permitidas que podrían estar ligadas a su esquema.

No mencionaste si buscas networkingucir solo la longitud de la URL o usar la URL abreviada para algo (como tinyurl). ¿Esa es tu intención? Si ese es el caso, entonces puede crear el hash para la URL y usar ese hash internamente para mapear a la URL real. Entonces su elección de URL de corta duración depende de los algorithms hash. Según su intención, puede elegir una de las opciones sugeridas en las respuestas.

Lo siento, pero no hay manera de eso. En este caso, acortar significa perder la información única. Tal vez podría generar keys únicas (hash) para cada cadena, pero no le ayudará a descomprimir los datos, a less que no haya ningún dictionary (información estática).

Compruebe cómo funciona ZIP o RAR, por ejemplo