Название: "Обратимая" хеш-функция? Отправлено: CuteBunny от Сентябрь 25, 2013, 17:32 Доброго времени суток, всем!
Существуют ли в теории алгоритмы преобразования текста произвольной длины в текст фиксированной длины? Я слышал краям уха, будто хеш-функции позволяют преобразовать один текст произвольной длины в другой текст фиксированной длины, только обратно уже не вернуть. Можно ли сделать тоже самое только с возможностью потом восстановить исходный текст? Название: Re: "Обратимая" хеш-функция? Отправлено: Bepec от Сентябрь 25, 2013, 17:42 Есть. Это называется архивирование.
А уникальный архиватор в хеш и обратно - это архиватор бабушкина. Весь интернет на одной флешке. Название: Re: "Обратимая" хеш-функция? Отправлено: Serr500 от Сентябрь 25, 2013, 21:29 Можно ли сделать тоже самое только с возможностью потом восстановить исходный текст? Вам, наверное, нужно не то, что Вы написали (такого не бывает), а простое обратимое шифрование. Посмотрите в сторону AES.Хэш-функции такие как MD5, SHA и им подобные действительно берут исходные данные и строят по ним дайджест (хэш) фиксированной длины. Обратно вернуть не то чтобы совсем нельзя, но очень сложно - для нахождения сообщения по дайджесту необходимо огромное время и вычислительные мощности. Кроме того, для каждого дайджеста существует бесконечное множество соответствующих ему сообщений. То есть Ваша задача, в принципе, разрешима, но текст будет восстанавливаться неоднозначно. Название: Re: "Обратимая" хеш-функция? Отправлено: Igors от Сентябрь 26, 2013, 07:20 Существуют ли в теории алгоритмы преобразования текста произвольной длины в текст фиксированной длины? Такого (обратимого) однозначно нет - как и вечного двигателя. Возможно Вы имели ввиду "переменной но ограниченной длины в текст фиксированной длины"Название: Re: "Обратимая" хеш-функция? Отправлено: Bepec от Сентябрь 26, 2013, 08:19 Вон на хабре библлиотечку выкладывали - данные любой длины упаковываются в число pi. Вот только данные для восстановления обычно больше, чем сами данные :D
Название: Re: "Обратимая" хеш-функция? Отправлено: Igors от Сентябрь 26, 2013, 08:46 Вон на хабре библлиотечку выкладывали - данные любой длины упаковываются в число pi. Вот только данные для восстановления обычно больше, чем сами данные :D Длина числа pi не фиксирована :)Название: Re: "Обратимая" хеш-функция? Отправлено: Bepec от Сентябрь 26, 2013, 08:49 Ну это да :D Фиксированная длина - бесконечность :D
Название: Re: "Обратимая" хеш-функция? Отправлено: CuteBunny от Сентябрь 26, 2013, 09:54 Существуют ли в теории алгоритмы преобразования текста произвольной длины в текст фиксированной длины? Такого (обратимого) однозначно нет - как и вечного двигателя. Возможно Вы имели ввиду "переменной но ограниченной длины в текст фиксированной длины"Длина, ограничена в MAX_PATH. Задача вообще такая: есть свой формат файла-архива, в котором каждое имя файла записано в списке в виде c-строки. Длина имени файла может быть в пределах от [1; MAX_PATH]. Т.к. в архиве оно хранится как c-строка, там имхо используется костыль при чтении бинарного файла, как strcpy, где src - это начало имени файла. Вот я и подумал, было бы круто, если бы имена файлов в архиве всегда были бы фиксированной длины (каким-то образом закодированы, и обратно могли бы легко быть раскодированы при распаковке), меньше чем MAX_PATH - и место экономишь и нет такого костыля с c-строкой, имхо конечно. Название: Re: "Обратимая" хеш-функция? Отправлено: CuteBunny от Сентябрь 26, 2013, 09:59 Можно ли сделать тоже самое только с возможностью потом восстановить исходный текст? Вам, наверное, нужно не то, что Вы написали (такого не бывает), а простое обратимое шифрование. Посмотрите в сторону AES.Хэш-функции такие как MD5, SHA и им подобные действительно берут исходные данные и строят по ним дайджест (хэш) фиксированной длины. Обратно вернуть не то чтобы совсем нельзя, но очень сложно - для нахождения сообщения по дайджесту необходимо огромное время и вычислительные мощности. Кроме того, для каждого дайджеста существует бесконечное множество соответствующих ему сообщений. То есть Ваша задача, в принципе, разрешима, но текст будет восстанавливаться неоднозначно. Да, я подумывал на алгоритмами блочного шифрования вроде aes, des, возможно это и будет лучшим решением, хотя я думал, может есть что-нибудь проще. Просто еще не понятно, какой длины будет массив байтов на выходе, если у меня на входе строки с переменной длиной [1; MAX_PATH]? Название: Re: "Обратимая" хеш-функция? Отправлено: CuteBunny от Сентябрь 26, 2013, 10:00 Есть. Это называется архивирование. А уникальный архиватор в хеш и обратно - это архиватор бабушкина. Весь интернет на одной флешке. Ну вообще, да, речь идет об архивировании файлов.) Название: Re: "Обратимая" хеш-функция? Отправлено: Bepec от Сентябрь 26, 2013, 10:12 Ну тогда подкорректируем задачу.
У вас есть ваш формат архива. Вы хотите его подкорректировать, чтобы имя файла всегда было не более MAX_PATH - сокращайте имена. Ибо никакой архиватор не сможет ужать "Мама мыла раму и на улице пахло мылом.txt" в 4-5 символов. Либо теряем часть имени, либо придумываем инновационные решения. (Сколково ни одного не придумало вроде :) ) |