2010-04-08 4 views
3

Я извлекаю списки хешей crc32, которые содержат имена файлов, а не содержимое.crc32 decrypt short string

мне нужно, чтобы иметь возможность расшифровать строки, которые перемешаны имена, как «vacationplans_2010.txt»

которые менее 25 символов.

это возможно?

ответ

7

это односторонняя хеш-функция. Он не может быть расшифрован.

+4

downvoters, пожалуйста, дайте свои аргументы перед нажатием. – Andrey

+0

Не уменьшал вас, но заметил: CRC - это не односторонняя хеш-функция, это просто небезопасная хеш-функция. –

+1

Это еще один способ. –

2

A hash function как CRC32 вычисляет простой ввод данных (переменный). Расчет не является обратимым - т. Е. Вы не можете надежно получить исходное значение, учитывая только хеш.

4

Несмотря на то, что ответили другими пользователями, CRC32 не является криптографической хэш-функцией; он предназначен для проверки целостности (контрольные суммы данных). Криптографические хэш-функции часто описываются как «односторонние хеш-функции», CRC32 не имеет «односторонней» части.

При этом вы должны учитывать следующее: поскольку множество всех возможных имен файлов с именами 25 или более символов больше 2^32, некоторые имена файлов должны иметь одно и то же значение хэш-функции. Следовательно, может быть, что для некоторых значений CRC32 вы получите - будет несколько возможных источников (имена файлов). Вам понадобится способ определить «настоящий» источник (я предполагаю, что человеческий выбор будет лучшим выбором, поскольку наш мозг - отличное устройство распознавания образов, но оно действительно зависит от вашего сценария).

Несколько методов могут быть использованы для частичного достижения того, о чем вы просите. Brute-force является одним из них (хотя, с именами файлов длиной 25 символов, грубая сила может занять некоторое время). Измененная словарная атака - еще один вариант. Другие варианты основаны на анализе алгоритма CRC32 и потребуют, чтобы вы погрузились в детали реализации алгоритма (иначе вам будет трудно понять, что вы реализуете). Например, см. Это article, или это artice.

EDIT: определения Брюс Шнайер (автор Applied Cryptography, между прочим):

Односторонние функции относительно легко вычислить, но значительно труднее переломить. .... В этом контексте «жесткий» определяется как нечто вроде: Пройдет миллионы лет до . Вычислите x из f (x), даже если все компьютеры в мирах были назначены .

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

Безопасность односторонней хэш-функции Функция - это односторонность.

+0

В этом описании все алгоритмы хэша «не имеют односторонней части», так как вы всегда можете использовать грубую силу для данных, чтобы найти, какие из них производят желаемый результат. Я бы очень хотел, чтобы вы описали, почему CRC32 не имеет «односторонней» части и, скажем, SHA384, нет. –

+0

Я не определил «одностороннюю» часть. Если вы считаете грубую силу, тогда все небезопасно, за исключением одноразовых колодок и производных алгоритмов (например, некоторые схемы секретного обмена). «Односторонняя» часть зависит от того, что алгоритм «трудно отменить», что означает, что с учетом изображения трудно узнать что-либо об источнике. Быть «односторонним» не является четко определенным критерием; это зависит от текущих исследований и изучения алгоритма. Он может измениться, основываясь на новых знаниях, распространяемых через исследовательское сообщество. CRC никогда не был построен так, чтобы быть «в одну сторону», дизайнеры не пытались это сделать. –

+0

http://en.wikipedia.org/wiki/Hash_function http://en.wikipedia.org/wiki/Cryptographic_hash_function см. Разницу? – Andrey