Генерация псевдоприродной фразы из большого целого числа обратимым способом

У меня есть большое и "уникальное" целое число (на самом деле хеш SHA1).

Примечание: Пока я говорю о хэшах SHA1, это не ] криптография / секретный вопрос! Я не пытаюсь взломать SHA1. Представьте себе случайное 160-битное целое число вместо SHA1, если это поможет.

Я хочу (только для развлечения) найти алгоритм для сопоставления этого хэша SHA1 с сгенерированной компьютером (псевдо) английской фразой . Отображение должно быть двунаправленным (т. Е. Зная алгоритм, нужно уметь вычислять исходный хэш SHA1 из этой фразы.)

Фраза не обязательно имеет смысл. Я бы даже согласился на целый абзац чуши. (Хотя качество - англоязычность - абзаца, вероятно, должно быть лучше, чем для простой фразы.)

Более совершенный алгоритм будет производить более короткие, более естественные и уникальные фразы.

Вариант: нормально, если я смогу работать только с частью хеша. Скажем, первые шесть шестнадцатеричных цифр в порядке.

Возможное использование сгенерированной фразы: удобочитаемая версия идентификатора фиксации Git для использования в качестве девиза для данной версии программы, созданной на основе этой фиксации. (Как я уже сказал, это «для развлечения». Я не утверждаю, что это очень практично - или что это гораздо более читабельно, чем сам SHA1.)

Возможный подход: в прошлом я пытался создать таблица вероятностей (слов) и генерировать фразы как цепи Маркова, заполняя генератор (выбирая ветви из дерева вероятностей), в соответствии с битами, которые я прочитал из SHA. Это было не очень удачно, полученные фразы были слишком длинными и некрасивыми. Я не уверен, было ли это ошибкой или общим недостатком алгоритма, поскольку мне пришлось отказаться от него достаточно рано.

Теперь я думаю о том, чтобы попытаться решить проблему еще раз. Любой совет о том, как к этому подойти? Как вы думаете, может ли здесь работать подход с использованием цепей Маркова? Что-нибудь еще?

5
задан rekire 29 April 2012 в 13:24
поделиться