2014-11-18 2 views
1

Я нахожу это очень трудным предметом, чтобы найти окончательный ответ! Надеясь вы, ребята, может помочь ...Добавление соли в хэш и генерации url ...?

У меня есть следующий код

<form action='test2.php?' name ='gen' method='post'> 
Text to hash <input type='text' name='pass'><br /> 
     <input type='submit' value='Go!'> 
</form> 

<?php 
$pass2=$_POST['pass']; 
$pass=md5($pass2); 
echo $pass; 
?> 

Как добавить специфичный код соли до конца текста, который пользователь будет вводить? Например, если пользователь вводит PETERPAN, я хотел бы ввести LivesForever в качестве соли, который, очевидно, вернет хэш-код.

Затем я хотел бы создать URL-адрес, используя BOTH входной текст и хешированный код. Это просто должно появиться в div ниже поля ввода.

Так что URL будет выглядеть следующим образом ...

http://www.website.com/+USER_INPUT_VALUE+/randomfolder/+HASH_PRODUCED+

Очевидно полученный URL не будет выглядеть точно так, но вы получите идею ...

Я изо всех сил найти ответ на это!

спасибо, ребята

+2

Могу ли я спросить, что первым вы собираетесь его использовать? Если он используется для хэширования паролей, вы никогда не должны передавать сгенерированный хэш пользователю ... Солить можно сделать, объединив строку перед хэшированием так: 'md5 ($ pass2. Соль соли соли);' – RichardBernards

+2

В качестве второго комментария ... md5 - действительно слабый алгоритм хэширования ... Я видел установки, которые могут перетащить его в течение часа для строки из 30 символов ... – RichardBernards

+0

@RichardBernards это часть небольшого проекта I «Я получил за тренировку ... Я абсолютно понимаю и понимаю вашу озабоченность, хотя и спасибо, что нашли время ответить :) – AdamH

ответ

2

от того, что вы описали:

$random = 'dolly'; // specific salt 
$pass2 = $_POST['pass'] . $random; // add it to user input 

$pass = md5($pass2); // md5() both 

$url = 'http://www.website.com/'.$_POST['pass'].'/'.$random.'/'.$pass; // the url you need 

echo $pass.'<br>'.$url; 
+0

Спасибо большое, это работает отлично :) – AdamH

+0

Если бы я хотел передать URL-адрес источнику iframe на странице, как я бы это сделал? – AdamH

+0

Было бы интересно узнать, что имеет в виду OP, но с помощью этого кода вы найдете исходный пароль в URL-адресе. – martinstoeckli

1

Вы могли бы сделать соль, делая что-то вроде

$pass = md5($pass2 . $salt) 

Однако, если вы действительно хотите сделать безопасный хэш, функция как password_hash больше подходит.

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

+0

благодарит вас за ваш вклад, он очень благодарен :) – AdamH

0

Вы можете просто сцепить соль строку конца, введенный пользователем строки.

<?php 
    $pass2=$_POST['pass'] . 'LivesForever'; 
    $pass=md5($pass2); 
    echo $pass; 
?> 

Затем построить URL:

$url = 'http://www.website.com/' . $_POST['pass'] . '/' . $randomfolder . '/' . $pass;