Как перевернуть строку хеша, используя python - PullRequest
0 голосов
/ 01 ноября 2019

Я хэшировал почтовые идентификаторы и хочу реализовать какой-то процесс, чтобы можно было перевернуть строку хеша.
Я только что попробовал этот подход с использованием модулей python hashlib и pycrypto, но, к сожалению, мне это не удалось, а также я прочитал много постов ната же тема, но ни одна из них не сработала для меня, и, к счастью, я нашел что-то в Google, который говорит, что он дешифрует и шифрует, что не так в случае хеширования, но это делает свою работу. URL-адрес https://md5decrypt.net/en/Sha256.
Мне было интересно, как этому веб-сайту удается это сделать.

Используя hashlib, я получаю

import hashlib
hashlib.sha256("mishraamrish.asm@gmail.com".encode())
<sha256 HASH object @ 0x7f55e30c3b20>
_.hexdigest()
'3ad0c9ce5b036587d08b4a13e7478ea4472ec32de04854bc37dcfed1baf760cc'

и с этого веб-сайта, когда я выбрал Encrypt, я получил

Sha256(mishraamrish.asm@gmail.com) = 3ad0c9ce5b036587d08b4a13e7478ea4472ec32de04854bc37dcfed1baf760cc

аналогично, когда я использовал опцию расшифровки, я получил

3ad0c9ce5b036587d08b4a13e7478ea4472ec32de04854bc37dcfed1baf760cc : mishraamrish.asm@gmail.com

, так что это добрый запрос от того, кто готов понизить голос. пожалуйста, проанализируйте его, прежде чем приступить к работе с кнопкой «вниз».

Я знаю, что хеширование не является обратимым процессом, и мне любопытно, что с этим сайтом, если нет, то как они это делают?

Спасибо.

Ответы [ 4 ]

3 голосов
/ 01 ноября 2019

Вы не можете, и это не уникально. Вот что делает его хешем.

0 голосов
/ 01 ноября 2019

Криптографические хеш-функции, такие как SHA2, SHA3, Shake, Blake2 и т. Д., Являются односторонними функциями. Они могут хэшировать входные данные произвольной длины до фиксированного размера, например 256 в SHA-256. Из-за принципа голубя, столкновений , и они неизбежны . Но мы ожидаем найти, если трудно. Мы ожидаем, что они будут иметь:

  • preimage-сопротивление - для практически всех предварительно заданных выходов невозможно вычислить любой вход, который хэширует к этому выходу, т. Е. найти любой прообраз x' такой, что h(x') = y при заданном значении y, для которого соответствующий вход неизвестен.
  • сопротивление 2-го прообраза, слабое столкновение - это вычислительно невозможнонайти любой второй вход, который имеет тот же выход, что и любой указанный вход, т. е. заданный x, чтобы найти 2-й прообраз x' != x такой, что h(x) = h(x').
  • сопротивление столкновению, сильноестолкновение - в вычислительном отношении невозможно найти любые два различных входа x, x', которые хэшируют к одному и тому же выходу, т. е. такие, что h(x) = h(x').

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

веб-сайт, о котором вы упомянули , имеет хитрость , затем вы хотите, чтобы SHA256 хэшировал некоторый текст, и они немедленно сохраняли его в своей базе данных. Когда вы спрашиваете о значении хеша, которое вы получили от их сайта, они ищут его в своей базе данных. Он существует, поскольку они хранят его, когда вы спросили значение хеш-функции. Итак, вы помогли им увеличить хэши их БД. Они имеют только 6,128,202,407 sha256 hash database, что является незначительным значением по сравнению с возможными выходами SHA-256, что составляет 2^256

Примечание: хэширование не является шифрованием.

0 голосов
/ 01 ноября 2019

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

Конечно, база данных может не совпадатьили содержат несколько совпадений хеша , поскольку математическое определение хеша равно одностороннему .

. Именно так работают сайты, подобные предоставленному вами. .

Этот же механизм используется в хеш-таблицах .

.
0 голосов
/ 01 ноября 2019

Так что вы хотите получить исходную строку из хеша? Основная причина, по которой мы используем хэши, заключается в том, что они необратимы, поэтому я не думаю, что это возможно. Вы можете запутаться с шифрованием , которое может расшифровать с помощью ключа.

Извините, я не могу быть более полезным!

...