Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/50: Рейтинг темы: голосов - 50, средняя оценка - 4.50
0 / 0 / 1
Регистрация: 24.06.2009
Сообщений: 232

Пароли в md5

11.05.2011, 18:47. Показов 10460. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть простой код регистрации пользователей, как сделать что бы пароли шифровались в md5

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<h2>СТРАНИЦА РЕГИСТРАЦИИ</h2>
<table> 
<form method=post> 
<tr><td>Имя:</td><td><input type=text name=name></td></tr> 
<tr><td>Пароль:</td><td><input type=password name=pass></td></tr> 
<tr><td>Пароль:</td><td><input type=password name=pass_again></td></tr> 
<tr><td></td><td><input type=submit value='Зарегистрировать'></td></tr> 
</form> 
</table> 
 
 
 
<?php 
  $_POST['name'] = trim($_POST['name']); 
  $_POST['pass'] = trim($_POST['pass']); 
  $_POST['pass_again'] = trim($_POST['pass_again']); 
  if(empty($_POST['name'])) exit(); 
  
  if(empty($_POST['name'])) exit('Поле "Имя" не заполнено'); 
  if(empty($_POST['pass'])) exit('Одно из полей "Пароль" не заполнено'); 
  if(empty($_POST['pass_again'])) exit('Одно из полей "Пароль" не заполнено'); 
  if($_POST['pass'] != $_POST['pass_again']) exit('Пароли не совпадают'); 
 
 
//проверка на совпадение имени!!!
$filename = "users.txt";  
  
  $arr = file($filename); 
  foreach($arr as $line) 
  { 
    
    $data = explode(":",$line); 
    $temp[] = $data[0]; 
  } 
  if(in_array($_POST['name'], $temp)) 
  { 
    exit("Данное имя уже зарегистрировано, пожалуйста, выберите другое"); 
  }
 
//Записываю данные в файл
$fail = fopen($filename,"a");
$text = $_POST['name'].":". 
        $_POST['pass']."\r\n";
 
 
if (fwrite($fail,$text)) 
  echo "Запись прошла успешно";
else 
  echo "Произошла ошибка при записи данных";
fclose($fail);
 
?>
Добавлено через 34 минуты
Понял как делать, теперь вопрос в другом, как сделать что бы md5 сохранялось в 128 bit значении ??
Вот пример
PHP
1
344907E89B981CAF221D05F597EB57A6AF408F15F4DD7895BBD1B96A2938EC24A7DCF23ACB94ECE0B6D7B0640358BC56BDB448194B9305311AFF038A834A079F
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.05.2011, 18:47
Ответы с готовыми решениями:

md5 и пароли (php)
Решил, что мне нужно пароли у зарегистрированных пользователей хранить зашифрованными. В файле регистрации прописал: $password =...

Если MD5 программы не равен MD5, указанному на сервере, то программа закрывается
И так, собственно, изложил свою мысль в заголовке. Если MD5 программы не равен MD5, указанному на сервере (в текстовом файле), то...

Проверка MD5 локального файла с MD5 записанных в двух разных текстовых файлах
Задача такова: Public Function CheckHash(LocalPath As Object, MD5File As Object) LocalPath - Местонахождение локальных файлов, у...

16
130 / 117 / 30
Регистрация: 14.11.2010
Сообщений: 707
11.05.2011, 20:13
md5 использоваться для хэширования строки байт произвольной длины в 128-битное значение.
Результат вычисления (хэш) представлен четырьмя 32 битными словами -A, B, C, D (младшим записывается A, старшим - D). 128-битный MD5 хэш готов!
0
web dev
 Аватар для TBIKC
107 / 93 / 9
Регистрация: 23.09.2010
Сообщений: 737
12.05.2011, 10:15
Используйте функцию md5()

Описание
string md5 ( string str [, bool raw_output] )

Вычисляет MD5 хэш строки str используя алгоритм MD5 RSA Data Security, Inc. и возвращает этот хэш. Хэш представляет собой 32-значное шестнадцатеричное число. Если необязательный аргумент raw_output имеет значение TRUE, то возвращается бинарная строка из 16 символов.

Замечание: Необязательный аргумент raw_output был добавлен в PHP 5.0.0 и по умолчанию равен FALSE

Не по теме:

Взято с php.net

0
 Аватар для Sanu0074
59 / 59 / 16
Регистрация: 14.06.2010
Сообщений: 1,190
Записей в блоге: 5
12.05.2011, 18:27
перед тем как добавить просто заколдуй пароли вот так:

PHP
1
2
3
$pass = md5($pass);//шифруем пароль          
$pass = strrev($pass);// для надежности добавим реверс          
$pass = $pass."abcdef";//и ещё для надежности добавим свои любые символы
и перед проверкой, тоже сначала введенное в md5, а потом токо сравнюй.....
0
20 / 19 / 3
Регистрация: 20.06.2010
Сообщений: 626
13.05.2011, 12:49
Цитата Сообщение от Sanu0074 Посмотреть сообщение
перед тем как добавить просто заколдуй пароли вот так:
PHP
1
2
3
      
$pass = strrev($pass);// для надежности добавим реверс          
$pass = $pass."abcdef";//и ещё для надежности добавим свои любые символы
и перед проверкой, тоже сначала введенное в md5, а потом токо сравнюй.....
А не бессмысленно ли это?
Если кто то добудет пароль пользователя то он его и введет, а уже сам код будет колдовать strrev($pass) $pass."abcdef сверит с БД и пропустит вредителя.
А если допустим кто то взломал БД и добыл md5.
Начнем с того что проще будет просто заменить его на свой md5 так как декодировать его нереально.
И уже длина этого md5 совсем не имеет значения. Только лишнее место в БД занимает. По мне так чем короче тем лучше.
Какая то мнимая безопасность получается, а на деле никаких плюсов не вижу.
0
 Аватар для Sanu0074
59 / 59 / 16
Регистрация: 14.06.2010
Сообщений: 1,190
Записей в блоге: 5
13.05.2011, 13:38
Цитата Сообщение от ICEBERG@ Посмотреть сообщение
А не бессмысленно ли это?
Если кто то добудет пароль пользователя то он его и введет, а уже сам код будет колдовать strrev($pass) $pass."abcdef сверит с БД и пропустит вредителя.
А если допустим кто то взломал БД и добыл md5.
Начнем с того что проще будет просто заменить его на свой md5 так как декодировать его нереально.
И уже длина этого md5 совсем не имеет значения. Только лишнее место в БД занимает. По мне так чем короче тем лучше.
Какая то мнимая безопасность получается, а на деле никаких плюсов не вижу.
я несогласен с этим, думаю что ты неправ. У меня по этому поводу другое мнение!
вопервых надо выкурить символы, во вторых узнать реверс, в третьих ты можеш сюда свою кодировку вставить, и всегда чем больше пароль тем труднее его ломануть.......
0
20 / 19 / 3
Регистрация: 20.06.2010
Сообщений: 626
13.05.2011, 17:35
Ну тогда скажи в чем я не прав может действительно я чего то не понимаю.

Вот простой алгоритм:

Я регистрируюсь на твоем сайте ввожу наиболее лохский пароль "000001".
Твой код :
md5(100000abcdef)= ed963b55ae08ea489410c92232df5e74
пишет в БД.

Далее я захожу на сайт и ввожу тот же 000001
Твой код :
md5(100000abcdef)= ed963b55ae08ea489410c92232df5e74 = запись в БД
ПРОХОДИ ДОРОГОЙ!

Далее кто то подглядел мой пароль 000001.
Заходит на сайт
Твой код:
md5(100000abcdef)= ed963b55ae08ea489410c92232df5e74 = запись в БД

Или кто то запускает подбор паролей: (000000, 000001, 000002, ... )
Как только генератор дойдет до 000001
Твой код :
md5(100000abcdef)= ed963b55ae08ea489410c92232df5e74 = запись в БД
...................

Так какой в этом смысл?
0
 Аватар для Sanu0074
59 / 59 / 16
Регистрация: 14.06.2010
Сообщений: 1,190
Записей в блоге: 5
13.05.2011, 19:20
Цитата Сообщение от ICEBERG@ Посмотреть сообщение
Так какой в этом смысл?
ну тогда зачем шифровать, можно напрямую всё кидать...
0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
13.05.2011, 19:27
ICEBERG@, от подглядывания пароля через плечо никак не защитится.
Цитата Сообщение от Sanu0074 Посмотреть сообщение
ну тогда зачем шифровать, можно напрямую всё кидать...
Частично защищенную авторизацию можно организовать шифруя пароль перед отправкой на клиентской стороне, в таком случае Вы хотя бы защититесь от сниферов.
1
20 / 19 / 3
Регистрация: 20.06.2010
Сообщений: 626
13.05.2011, 22:28
Цитата Сообщение от Sanu0074 Посмотреть сообщение
ну тогда зачем шифровать, можно напрямую всё кидать...
Нет против md5 я ничего против не имею. Это очень выгодно для пользователя, что бы даже владелец сайта не знал пароль. Или взломщик добравшись до БД не мог увидеть пароли.
Но искуственно усложнять пароль думаю самообман.
Последнее что станет делать хакер добравшийся до БД это декодировать MD5.
Во первых это очень нудно и долго если вообще возможно. Во вторых пока он это закончит 99% пользователей уже сменят свои пароли узнав о взломе. Но еще раньше админ обнулит все пароли и разошлет всем новые с извинениями.
А что касается непосредственно декодирования то уже после второго полученного пароля увидев в конце обоих abcdef сделать вывод будет не сложно. Ну и дальше дело техники. Они же не идиоты.

Добавлено через 6 минут
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
ICEBERG@, от подглядывания пароля через плечо никак не защитится.

Частично защищенную авторизацию можно организовать шифруя пароль перед отправкой на клиентской стороне, в таком случае Вы хотя бы защититесь от сниферов.
Это хорошо но как это сделать средствами php которые не работают на стороне клиента?
Я тут искал про https но пока ничего не нашел.

И вообще вопрос о случаях применении обратимого кодирования в PHP остается открытым.

Добавлено через 1 час 54 минуты
К стати я тут подумал что если уж очень хочется путать хакера то уж лучше играть с самим хешом.
Например вырезать 2 последних значения и заменить их на случайное значение. А при проверке учитывать с исключением последних двух. Тогда даже хеш не будет содержать пароля. И при потере БД декодирование ничего не даст. Результат может быть получен только при совокупности скрипта и БД у хакера.
Или же можно вставить пару случайных символов в определенное место хеша и удалять их перед проверкой.
1
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
14.05.2011, 06:59
Еще, как вариант, можно над бинарным md5 (16 байт) проводить всяческие манипуляции. Например, закодировать его в base64 (получим 24 печатных символа, в конце "==" можно выкинуть, останется 22), затем транслиретацией некоторые символы подменить, чтобы нельзя было узнать в нем base64. Плюс еще соли добавить где-нибудь. Получится по крайней мере непонятное мясо из символов. Без кода, которым оно было получено, что хотите с ним, то и делайте.

Помимо md5() есть еще функции sha1() и crypt().
0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
14.05.2011, 10:14
ICEBERG@, если злоумышленник получил доступ к БД, то он полезет за тем, за чем он пришел - за данными, пароли ему не хрен не сдались.
Цитата Сообщение от ICEBERG@ Посмотреть сообщение
Это хорошо но как это сделать средствами php которые не работают на стороне клиента?
Средствами PHP - никак, нужно пользовать, например, JavaScript.
0
20 / 19 / 3
Регистрация: 20.06.2010
Сообщений: 626
14.05.2011, 12:59
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
ICEBERG@, если злоумышленник получил доступ к БД, то он полезет за тем, за чем он пришел - за данными, пароли ему не хрен не сдались.
А я о чем.

Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Средствами PHP - никак, нужно пользовать, например, JavaScript.
С JavaScript пока связываться не хочется. Лучше скажи как использовать https в php
0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
14.05.2011, 13:15
Цитата Сообщение от ICEBERG@ Посмотреть сообщение
Лучше скажи как использовать https в php
Точно также как и http. Всю работу по обработке берет на себя сервер. Также для работы по протоколу https необходимо получить сертификат.
0
20 / 19 / 3
Регистрация: 20.06.2010
Сообщений: 626
14.05.2011, 13:23
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Точно также как и http. Всю работу по обработке берет на себя сервер. Также для работы по протоколу https необходимо получить сертификат.
Это плохо. А у кого и как и сколько это может стоить?
0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
14.05.2011, 13:25
Цитата Сообщение от ICEBERG@ Посмотреть сообщение
А у кого и как и сколько это может стоить?
В центрах сертификации. Гуглить SSL сертификат.
0
 Аватар для boong
154 / 124 / 11
Регистрация: 11.01.2010
Сообщений: 434
14.05.2011, 19:25
Ну md5 пока ещё актуальный, bookkc по большому счету если стирят пароль с пк пользователя по его вине это уже не ваши проблемы, ваша задача максимально возможно обеспечить защиту данных на стороне сервера, что касается по поводу разных способов защиты их можно применять много.
я в одном проекте организовал вот такие проверки:
1- защита от подбора пароля и блокировка аккаунта на время
2- динамический ключ для кук который сейчас один,а через секунду другой и так далее(кстати проблем при аутентификации пользователя через cookie нет)
3- да есть соль в хеш но не просто к каждому хешу дописаны символы (abcde), а добавляется по специальному алгоритму
4- после авторизации идёт проверка ключа который пользователь получает через SMS
там ещё есть несколько уровней защиты но даже это составит не мало труда злоумышленнику, а на 100% защитится не может ни кто, и гарантий таких не даст.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.05.2011, 19:25
Помогаю со студенческими работами здесь

Сравнение md5-сумм с md5-суммами файлов!
Всем доброго времени суток! Помогите реализовать небольшое приложение - вообщем имеется папка &quot;Тест&quot; в этой папке есть 2 файла...

Рекурсивное переименование файлов, md5-хеш которых совпадает с md5-хешем, указанном в списке файлов
Есть файл из двух колонок md5-хеш и имя файла (краткое, с расширением, UTF-8). Есть каталог с множеством файлов во всевозможных...

Проверка файла на MD5 и SHA1 и сравнение с готовым MD5 и SHA1
Есть файл text.txt на него md5:53734131cd0cf82dfbbe85e0459089e9 и sha1:8f38ce7cb44c0b78f9cb4de6ddedba2107525386 Код: @echo off ...

md5 c++ and md5 php
Доброе время суток, программисты. Пытаюсь добиться идентичного кодирования текстовой строки в php и билдере. В пхп пользуюсь md5(). В...

Пароли
Добрый день! Имеется программа разграничения полномочий пользователей на основе паролей (в приложении). Необходимо сделать проверку...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru