J'ai un entier grand et "unique" (en fait un hachage SHA1).Génération d'une phrase pseudo-naturelle à partir d'un grand entier de manière réversible
Note: Pendant que je parle ici de hash SHA1, c'est pas une question cryptographie/sécurité! Je suis pas essayant de casser SHA1. Imaginez un entier aléatoire de 160 bits au lieu de SHA1 si cela peut aider.
Je veux (pour aucune autre raison que de s'amuser) trouver un algorithme pour mapper ce hachage SHA1 à une phrase (pseudo) anglaise générée par ordinateur. Le mappage doit être bidirectionnel (c'est-à-dire, connaissant l'algorithme, il faut être capable de calculer le hachage SHA1 d'origine à partir de cette phrase.)
La phrase n'a pas de sens. Je me contenterais même de tout un paragraphe de non-sens. (Bien que la qualité - anglaisness - d'un paragraphe devrait probablement être meilleure que pour une simple phrase.)
Un meilleur algorithme produirait des phrases plus courtes, plus naturelles et plus uniques.
Une variante: c'est OK si je ne peux travailler qu'avec une partie de hash. Dites, les six premiers chiffres hexadécimaux sont bien.
L'utilisation possible de la phrase générée: la version lisible par un humain de Git commit ID, à utiliser comme devise pour une version de programme donnée, qui est construite à partir de cette validation. (Comme je l'ai dit, c'est "pour le plaisir" Je ne prétends pas que c'est très pratique - ou être beaucoup plus lisible que le SHA1 lui-même.)
Approche possible: Dans le passé, j'ai essayé de construire une table de probabilités (de mots), et générer des phrases comme des chaînes de Markov, ensemencer le générateur (ramasser des branches de l'arbre de probabilité), selon les bits que j'ai lus dans le SHA. Ce n'était pas très réussi, les phrases résultantes étaient trop longues et laides. Je ne suis pas sûr que ce soit un bug, ou la faille générale dans l'algorithme, puisque j'ai dû l'abandonner assez tôt.
Maintenant, je pense à essayer de résoudre le problème une fois de plus. Des conseils sur la façon d'aborder cela? Pensez-vous que l'approche de la chaîne de Markov peut fonctionner ici? Autre chose?
Je ne connais pas vraiment la cryptographie. Donc, je veux juste m'assurer que je comprends la question. Vous voulez fondamentalement encoder un grand entier en une phrase unique, de sorte que cela semble aussi naturel que possible? – yurib
@yurib: oui, c'est essentiellement ça. –
@yurib: sauf que je veux aussi pouvoir convertir cette phrase en entier plus tard. –