2016-11-25 7 views
0

Я хочу создать хэш некоторых данных. Просматривая некоторые алгоритмы хэширования, я мог бы найти bcrypt и PBKDF, наиболее подходящие для моего приложения. Может случиться так, что при использовании другого алгоритма данных генерируется один и тот же хеш (как в MD5, он может генерировать один и тот же хеш для разных типов данных).Создает ли PBKDF2 уникальный хэш?

По отзывам многих экспертов, bcrypt является лучшим безопасным алгоритмом хэширования и обеспечивает уникальность между различными хэшами.

Но имеет ли PBKDF2 уникальность для хэша?

Edit 1

Мне нужно создать хэш с теми же входными данными (хэш-ключ будет генерироваться более чем один раз для того же входа), но он не должен генерировать то же хэш для различных входных данных (мощь происходит в некоторых хэш-алгоритмах).

+1

Во-первых, это неправильный форум. Во-вторых, какие свойства вам действительно нужны и что вы пытаетесь выполнить? –

+0

Вы хотите генерировать криптографические ключи на основе пароля или просто хотите получить уникальный идентификатор для некоторых данных? –

+0

Я хочу криптографический (хеш-ключ) на основе некоторого уникального идентификатора, и этот хэш-ключ должен быть однозначно идентифицирован (не должен иметь один и тот же ключ с другим id/password). Мое беспокойство может быть в том, что алгоритм хеширования может генерировать один и тот же ключ хэша для разных id/password. Итак, PBKDF2 заботится об этом, как bcrypt? – iTink

ответ

1

Алгоритмы, такие как один из SHA-2, достаточны. Генерируемый хэш не является уникальным для сообщения. Это даже правда, что существует бесконечное количество сообщений, хэш которых имеет одинаковое значение. Фокус в том, что невозможно найти одно из других сообщений, которые создают этот хеш.

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

Фактически внутреннее состояние PBKDF2 совпадает с внутренним хешем, который используется. Использование PBKDF2 (помимо функции Key Derivation Function вместо хэша) не поможет вам вообще. Он так же уязвим (или, скорее, не уязвим) для столкновений как внутреннего хэша.

+0

Спасибо Maarten для уточнения. (У) – iTink