Tengo un entero grande y "único" (en realidad, un hash SHA1).Generar una frase pseudonatural a partir de un entero grande de forma reversible
Nota : Mientras estoy hablando aquí de hash SHA1, esto es no una pregunta criptografía/seguridad! Estoy no tratando de romper SHA1. Imagine un entero aleatorio de 160 bits en lugar de SHA1 si eso ayuda.
Quiero (sin otro motivo que divertirme) encontrar un algoritmo para asignar ese hash SHA1 a una frase (pseudo-) inglesa generada por computadora. El mapeo debe ser bidireccional (es decir, conociendo el algoritmo, uno debe ser capaz de calcular el hash SHA1 original de esa frase.)
La frase no tiene por qué tener sentido. Incluso me conformaría con un párrafo entero de tonterías. (Aunque la calidad - inglés - de un párrafo probablemente debería ser mejor que para una mera frase.)
Un mejor algoritmo produciría frases más cortas, de aspecto más natural y más únicas.
Una variación: está bien si podré trabajar solo con una parte de hash. Digamos, los primeros seis dígitos hexadecimales están bien.
El posible uso de la frase generada: la versión humana legible de Git commit ID, para usar como lema para una versión de programa determinada, que se crea a partir de esa confirmación. (Como dije, esto es "por diversión". No pretendo que esto sea muy práctico, o que sea mucho más legible que el SHA1 mismo).
Posible enfoque: En el pasado he intentado construye una tabla de probabilidad (de palabras) y genera frases como cadenas de Markov, sembrando el generador (recogiendo ramas del árbol de probabilidad), de acuerdo con los bits que leí del SHA. Esto no fue muy exitoso, las frases resultantes fueron demasiado largas y feas. No estoy seguro de si esto fue un error, o la falla general en el algoritmo, ya que tuve que abandonarlo lo suficientemente temprano.
Ahora estoy pensando en intentar resolver el problema una vez más. ¿Algún consejo sobre cómo abordar esto? ¿Cree que el enfoque de cadena de Markov puede funcionar aquí? ¿Algo más?
Realmente no sé nada acerca de la criptografía. Así que solo quiero asegurarme de entender la pregunta. Básicamente, ¿desea codificar un entero grande en una oración única, para que suene lo más natural posible? – yurib
@yurib: sí, eso es básicamente eso. –
@yurib: excepto que también quiero ser capaz de convertir esta oración a ese entero más adelante. –