Пользовательский sha1 + солевой проход - PullRequest
1 голос
/ 25 мая 2011

Хорошо, на мой ответ ответили о защите паролем ( защита паролей пользователей php ) и мой окончательный код:

function sha1_custom($string) {
    $salt = sha1("1".$string."1");
    //In final code 1 replaced with others chars
    $string = sha1("$salt$string$salt");
    return $string;
}

Допустим, для максимальной безопасности я хочу зашифровать IP, дату регистрации, просто все. Но в админ-панели я хочу получить эту информацию, поэтому мне нужно ее расшифровать

Возможно ли из этого сценария / функции создать расшифрованный сценарий / функцию?

Ответы [ 4 ]

8 голосов
/ 25 мая 2011

Нет .Цель SHA-1 и других функций хеширования - быть только в одном направлении.Если бы вы могли даже немного ускорить процесс декодирования хэша в исходное значение, механизм хэш-функции считался бы нарушенным , и многие люди, вероятно, отказались бы от использования этого алгоритма.

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

Однако ...

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

и , поэтому соль была введена .Соль используется для дальнейшего усложнения входной переменной, что делает радужный стол менее надежным решением.Например, если вы сгенерируете хеш с MD5 для строки 'home', вы получите хеш 106a6c241b8797f52e1e77317b96a201 и, вероятно, сможете расшифровать его с помощью какого-либо общедоступного сервиса радужных таблиц в Интернете.Но если вы добавите немного соли (например, некоторые символы разрыва строки, некоторые непечатные символы и т. Д.), Скорее всего, вы найдете любую радужную таблицу, позволяющую вам декодировать хеш (даже хеш такого короткого и простого слова)быть крайне низким.

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

Я надеюсь, что это проясняет концепцию алгоритмов хеширования и солей.

0 голосов
/ 25 мая 2011

Существует множество двусторонних решений для шифрования. Особенно хорошим (с объяснением) является принятый ответ в этой теме:

Двустороннее шифрование: мне нужно хранить пароли, которые можно получить

0 голосов
/ 25 мая 2011

Хэш SHA1 необратим, потому что это делается с помощью вычислений.Вы не можете расшифровать его солью или нет.

0 голосов
/ 25 мая 2011

Краткий ответ: НЕТ.

sha1 как md5 и, как и все другие функции хеширования, one-way.

Если вам нужен crypt-decrypt, вам понадобится ключ и используйте его в таких функциях, как: mcrypt

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...