Как сменить хэш PHP с MD5 на SHA256?

Ссылка скопирована
PHP
1 ответ

Как сменить ХЭШ с MD5 на SHA256 авторизации?

auth.php:

if(empty($_COOKIE["pass"]) || $_COOKIE["pass"]==""){ 	header("Location: login.php"); } else{ 	$per = explode(":", $_COOKIE["pass"]); 	$pass_md5 = $per[0]; 	$login = $per[1]; $search = mysql_query("SELECT * From ".$account['table']." WHERE ".$account['name']."='$login'"); $user = mysql_fetch_array($search); 	if($pass_md5 != md5(md5($user["".$account['pass'].""]))){ 		setcookie("pass", "", 0, "/"); 		header("Location: login.php"); 	} } //?>

if(empty($_COOKIE["pass"]) || $_COOKIE["pass"]==""){ header("Location: login.php"); } else{ $per = explode(":", $_COOKIE["pass"]); $pass_md5 = $per[0]; $login = $per[1]; $search = mysql_query("SELECT * From ".$account['table']." WHERE ".$account['name']."='$login'"); $user = mysql_fetch_array($search); if($pass_md5 != md5(md5($user["".$account['pass'].""]))){ setcookie("pass", "", 0, "/"); header("Location: login.php"); } } //?>

authorization.php:

if(isset($_POST['login'])) {	 	$name = $_POST['nick']; 	$password = $_POST['password']; 	$search = mysql_query("SELECT * FROM `".$account['table']."` WHERE `".$account['name']."`='$name'"); 	if(mysql_num_rows($search)!=0) 	{ 		$user = mysql_fetch_array($search); 		if($user["".$account['pass'].""]==$password) 		{ 			setcookie("pass", md5(md5($password)).":".$name, time() + 60*100, "/"); 			header("Location: ./"); 		} 		else 		{ 			//$info_pass="<div class="alert alert-danger">   //<strong>Ошибка!</strong> Пароль не правильный. //</div>";             $info_pass="<div class="alert alert-danger">   <strong>Ошибка!</strong> Пароль не правильный. </div>"; 		}  	} 	else 	{ 		$info_user = "<div class="alert alert-danger">   <strong>Ошибка!</strong> Игрок не найден. </div>"; 	} } if($_GET["access"]=="exit"){ 	setcookie("pass", "", "0", "/"); 	header("Location: ./login.php"); }	 ?>

if(isset($_POST['login'])) { $name = $_POST['nick']; $password = $_POST['password']; $search = mysql_query("SELECT * FROM `".$account['table']."` WHERE `".$account['name']."`='$name'"); if(mysql_num_rows($search)!=0) { $user = mysql_fetch_array($search); if($user["".$account['pass'].""]==$password) { setcookie("pass", md5(md5($password)).":".$name, time() + 60*100, "/"); header("Location: ./"); } else { //$info_pass="<div class="alert alert-danger"> //<strong>Ошибка!</strong> Пароль не правильный. //</div>"; $info_pass="<div class="alert alert-danger"> <strong>Ошибка!</strong> Пароль не правильный. </div>"; } } else { $info_user = "<div class="alert alert-danger"> <strong>Ошибка!</strong> Игрок не найден. </div>"; } } if($_GET["access"]=="exit"){ setcookie("pass", "", "0", "/"); header("Location: ./login.php"); } ?>

Дополнительно:

Обратиться за помощью на фриланс.
Это ресурс где помогают в решение проблемы, а не делают всё работу за вас. Предложите вариант вашего решения, а мы поможет если что-то не работает.

П.С А вообще за такой код вас должны расстрелять и четвертовать, чтобы больше не писали такое гавно.

  • 1. Если уж менять, то на нормальный password_hash
    2. Вам просто поменять, или уже есть база пользователей?
  • Сергей delphinpro, есть уже база пользователей просто считывало чтобы
  • tukreb, это лично ваше мнение, если вам кайф сидеть и писать всякую чушь сходите на форум мамочек. Вам там будет удобнее, ибо там все такие же как вы
  • coder_43, ну если есть база пользователей - то как вы собираетесь пароли которые в md5, перегонять в sha? Как вы вообще это себе представляете
  • Дмитрий, неет, у пользователей стоит SHA256
  • coder_43, ну возьмите значение пароля который вам известен https://emn178.github.io/online-tools/sha256.html сгенерируйте значение от пароля - и сравните. может в базе sha256 с солью?
  • Дмитрий, да с солью
  • coder_43, ну а соль у вас где? Ну попробуйте сгенерировать значение от пароля и соли и посмотреть совпадает ли он со значением в базе.
  • Дмитрий,

    Как сменить хэш PHP с MD5 на SHA256?

  • coder_43, и? вы сравнили? оно совпадает? Или вы предлагаете мне по картинке угадать пароль, и сравнить?
  • Дмитрий, Пароль 123123 в сравнении не вышло
  • coder_43, ну если сравнение не катит - то либо соль неправильная, либо пароль не правильный, либо алгоритм не sha256.
  • Дмитрий, понял спасибо огромное:3
  • coder_43, в таком случае
    1. нужно сделать так, чтобы новые регистрации проходили с новым алгоритмом хеширования.
    2. Пользователям нужно дать флаг старый/новый алгоритм
    3. При логине проверять. Если используется старый алгоритм и пароль верный, то обновить хэш на новый и снять флаг.
    Постепенно пользователи сами обновят пароли.

    Или пойти жестким путём – обновить код аутентификации и регистрации на новый алгоритм, и всем пользователям предложить сбросить пароли, иначе говоря, пройти процедуру восстановления пароля.

  • Ответы:

    Попробуйте так:

    auth.php:

    $pass_sha256 = hash('sha256', $user["".$account['pass'].""]); // Хеширование пароля с помощью SHA256 if(!hash_equals($pass_sha256, hash('sha256', $password))) {     setcookie("pass", "", 0, "/");     header("Location: login.php"); }

    $pass_sha256 = hash('sha256', $user["".$account['pass'].""]); // Хеширование пароля с помощью SHA256 if(!hash_equals($pass_sha256, hash('sha256', $password))) { setcookie("pass", "", 0, "/"); header("Location: login.php"); }

    authorization.php:

    if($user["".$account['pass'].""]==$password) {     $pass_sha256 = hash('sha256', $password); // Хеширование пароля с помощью SHA256     setcookie("pass", $pass_sha256 . ":" . $name, time() + 60*100, "/");     header("Location: ./"); }

    if($user["".$account['pass'].""]==$password) { $pass_sha256 = hash('sha256', $password); // Хеширование пароля с помощью SHA256 setcookie("pass", $pass_sha256 . ":" . $name, time() + 60*100, "/"); header("Location: ./"); }

    • "Хороший" ChatGPT ответ.
    • Не вышло:(
    • tukreb, не отрицаю. Первое, что нужно сделать - это загуглить. В прошлого года появился ещё один вариант - спросить в ChatGPT. Если человек этого не сделал, ничего не запрещает это сделать мне и предоставить ответ
    • coder_43, что именно у вас не вышло? Где возникла проблема?
    • Nik Faraday, вообщем то такое ровно не приветствуется. Если уж вы даете ответ в правильности которого у вас уверенности никакой - проверьте его сами. А учитывая что чатгпт косячит через раз - загаживать интернет - идея дерьмовая
    • Nik Faraday, пишу пасс пишет неверный
    • Nik Faraday,

      Как сменить хэш PHP с MD5 на SHA256?

    • coder_43, забыл за верификацию пароля:
      if(hash_equals($stored_password, hash('sha256', $entered_password)))

      if(hash_equals($stored_password, hash('sha256', $entered_password)))

    • Nik Faraday, также
    • coder_43, стойте, вы пытаетесь залогиниться используя старый пароль из БД?
    • Nik Faraday, совершенно верно но пароль генерит, сама игра а сайт должен читать пароль на вход в ЛК SHA256 с солью
    • coder_43, стоп стоп стоп. Это два различных алгоритма, которые выдают разный хэш. Вы не сможете войти в систему, если у вас в БД записан пароль, который хэширован как md5, а вы пытаетесь сделать логин по алгоритму sha256
    • Nik Faraday, нет в БД уже идёт всё на SHA256. MD5 только в этих файлах больше не где нету
    • coder_43, попробуйте перерегистрировать юзера. Так же, для начала, используйте пароль без соли. Так должно работать. В указанном примере кода нет регистрации юзера и внесения его в БД вместе с солью. Так же нет фрагментов кода, которые вы используете для верификации пароля после внесённых изменений
    • Nik Faraday, да ибо регистрация юзера происходит на этапе в игре через Pawn, соответственно, регистрировать юзера мне не нужно. Мне нужно его авторизовать
    • coder_43, вам нужно его перерегистрировать, что бы обновился хэш. Без соли
    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Ольга Сеть Ответ

    Для смены хэша PHP с MD5 на SHA256 вам необходимо выполнить следующие шаги:

    1. Используйте функцию hash() вместо md5() для генерации SHA256 хэша. Функция hash() позволяет использовать различные алгоритмы хэширования, включая SHA256.

    2. Пример кода для генерации SHA256 хэша:

    $data = 'Hello, World!';
    $sha256_hash = hash('sha256', $data);
    echo $sha256_hash;

    $data = 'Hello, World!'; $sha256_hash = hash('sha256', $data); echo $sha256_hash;

    3. Обратите внимание, что SHA256 хэш будет иметь длину 64 символа (в отличие от 32 символов для MD5).

    4. Убедитесь, что ваш сервер поддерживает алгоритм SHA256. В большинстве случаев это не является проблемой, так как SHA256 является стандартным алгоритмом хэширования.

    5. Проверьте, что вы используете актуальную версию PHP, которая поддерживает функцию hash().

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

    Следуя этим шагам, вы сможете легко сменить хэш PHP с MD5 на более безопасный SHA256.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно