Russian Qt Forum
Ноябрь 22, 2024, 14:18 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: "Обратимая" хеш-функция?  (Прочитано 14154 раз)
CuteBunny
Гость
« : Сентябрь 25, 2013, 17:32 »

Доброго времени суток, всем!

Существуют ли в теории алгоритмы преобразования текста произвольной длины в текст фиксированной длины?
Я слышал краям уха, будто хеш-функции позволяют преобразовать один текст произвольной длины в другой текст фиксированной длины, только обратно уже не вернуть.
Можно ли сделать тоже самое только с возможностью потом восстановить исходный текст?
Записан
Bepec
Гость
« Ответ #1 : Сентябрь 25, 2013, 17:42 »

Есть. Это называется архивирование.

А уникальный архиватор в хеш и обратно - это архиватор бабушкина. Весь интернет на одной флешке.

Записан
Serr500
Гость
« Ответ #2 : Сентябрь 25, 2013, 21:29 »

Можно ли сделать тоже самое только с возможностью потом восстановить исходный текст?
Вам, наверное, нужно не то, что Вы написали (такого не бывает), а простое обратимое шифрование. Посмотрите в сторону AES.

Хэш-функции такие как MD5, SHA и им подобные действительно берут исходные данные и строят по ним дайджест (хэш) фиксированной длины. Обратно вернуть не то чтобы совсем нельзя, но очень сложно - для нахождения сообщения по дайджесту необходимо огромное время и вычислительные мощности. Кроме того, для каждого дайджеста существует бесконечное множество соответствующих ему сообщений. То есть Ваша задача, в принципе, разрешима, но текст будет восстанавливаться неоднозначно.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #3 : Сентябрь 26, 2013, 07:20 »

Существуют ли в теории алгоритмы преобразования текста произвольной длины в текст фиксированной длины?
Такого (обратимого) однозначно нет - как и вечного двигателя. Возможно Вы имели ввиду "переменной но ограниченной длины в текст фиксированной длины"
Записан
Bepec
Гость
« Ответ #4 : Сентябрь 26, 2013, 08:19 »

Вон на хабре библлиотечку выкладывали - данные любой длины упаковываются в число pi. Вот только данные для восстановления обычно больше, чем сами данные Веселый
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #5 : Сентябрь 26, 2013, 08:46 »

Вон на хабре библлиотечку выкладывали - данные любой длины упаковываются в число pi. Вот только данные для восстановления обычно больше, чем сами данные Веселый
Длина числа pi не фиксирована  Улыбающийся
Записан
Bepec
Гость
« Ответ #6 : Сентябрь 26, 2013, 08:49 »

Ну это да Веселый Фиксированная длина - бесконечность Веселый
Записан
CuteBunny
Гость
« Ответ #7 : Сентябрь 26, 2013, 09:54 »

Существуют ли в теории алгоритмы преобразования текста произвольной длины в текст фиксированной длины?
Такого (обратимого) однозначно нет - как и вечного двигателя. Возможно Вы имели ввиду "переменной но ограниченной длины в текст фиксированной длины"

Длина, ограничена в MAX_PATH.

Задача вообще такая: есть свой формат файла-архива, в котором каждое имя файла записано в списке в виде c-строки. Длина имени файла может быть в пределах от [1; MAX_PATH].
Т.к. в архиве оно хранится как c-строка, там имхо используется костыль при чтении бинарного файла, как strcpy, где src - это начало имени файла. Вот я и подумал, было бы
круто, если бы имена файлов в архиве всегда были бы фиксированной длины (каким-то образом закодированы, и обратно могли бы легко быть раскодированы при распаковке), меньше чем MAX_PATH - и место экономишь и нет такого костыля с c-строкой, имхо конечно.
Записан
CuteBunny
Гость
« Ответ #8 : Сентябрь 26, 2013, 09:59 »

Можно ли сделать тоже самое только с возможностью потом восстановить исходный текст?
Вам, наверное, нужно не то, что Вы написали (такого не бывает), а простое обратимое шифрование. Посмотрите в сторону AES.

Хэш-функции такие как MD5, SHA и им подобные действительно берут исходные данные и строят по ним дайджест (хэш) фиксированной длины. Обратно вернуть не то чтобы совсем нельзя, но очень сложно - для нахождения сообщения по дайджесту необходимо огромное время и вычислительные мощности. Кроме того, для каждого дайджеста существует бесконечное множество соответствующих ему сообщений. То есть Ваша задача, в принципе, разрешима, но текст будет восстанавливаться неоднозначно.

Да, я подумывал на алгоритмами блочного шифрования вроде aes, des, возможно это и будет лучшим решением, хотя я думал, может есть что-нибудь проще. Просто еще не понятно, какой длины будет массив байтов на выходе, если у меня на входе строки с переменной длиной [1; MAX_PATH]?
Записан
CuteBunny
Гость
« Ответ #9 : Сентябрь 26, 2013, 10:00 »

Есть. Это называется архивирование.

А уникальный архиватор в хеш и обратно - это архиватор бабушкина. Весь интернет на одной флешке.



Ну вообще, да, речь идет об архивировании файлов.)
Записан
Bepec
Гость
« Ответ #10 : Сентябрь 26, 2013, 10:12 »

Ну тогда подкорректируем задачу.

У вас есть ваш формат архива. Вы хотите его подкорректировать, чтобы имя файла всегда было не более MAX_PATH - сокращайте имена. Ибо никакой архиватор не сможет ужать "Мама мыла раму и на улице пахло мылом.txt" в 4-5 символов.

Либо теряем часть имени, либо придумываем инновационные решения. (Сколково ни одного не придумало вроде Улыбающийся )
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.049 секунд. Запросов: 22.