2016-04-18 3 views
0

Таким образом, мне удалось успешно зашифровать пароль пользователей и отправить его в БД и т. Д. Я просто хотел узнать, как я буду дешифровать или другие методы, чтобы проверить, вход соответствует паролю БД. Everytime хэш обрабатывается другой зашифрованный пароль created.Using PHP 4,3Как подтвердить пароль после шифрования

<form method="post" action=""> 
<input type="text" name="user" id="user"> 
<input type="password" name="pass" id="pass"> 
<input type="submit" name="submit"> 
</form> 

<?php 
session_start(); 

require_once("connection.php"); 
require_once("passEncrypt.php"); 

if(isset($_POST["submit"])) { 

$user = $_POST["user"]; 
$password = $_POST["pass"]; 

$pass = encrypt($password); 

echo $pass; 

} 

?> 

    <?php 

function encrypt($pass){ 
// use blowfish algorithm 10 times 
$hash_format="$2a$10$"; 
$salt_length=22; 
$salt = generate_salt($salt_length); 
// store this in DB 
$format_and_salt = $hash_format . $salt ; 
$hash = crypt($pass, $format_and_salt); 
return $hash; 
} 

function generate_salt($length){ 
// return 32 character random string 
$unique_string = md5(uniqid(mt_rand(), true)); 
// provides valid characters 
$base64_string = base64_encode($unique_string); 
// replaces + with . 
$mod_base64_string = str_replace('+', '.', $base64_string); 
// make string correct length 
$salt = substr($mod_base64_string, 0, $length); 
return $salt; 
} 
?> 

Я понимаю, что данные не продезинфицировать или закручивания PHP и т.д .. Я просто пытаюсь понять, как это сделать, прежде чем я внедрить код на мою фактическую страницу.

+0

Я не совсем понимаю, что вы хотите сделать. Правильно ли, что вы хотите сделать что-то вроде 'decrypt ($ pass)', чтобы сравнить его с '$ password'? – derlarsschneider

+0

Я бы использовал клиентское хеширование пароля (JavaScript). – DanFromGermany

+0

Обновление PHP до 5.5, оно было выпущено 20 июня 2013 года, еще лучше обновлено до PHP 7. Используйте 'password_hash()' и 'password_verify()'. Использование более старых версий просто играет в руки злоумышленников, они ищут сайты, использующие более старые версии. – zaph

ответ

2

Первый: This is not encryption. Шифрование является обратимым.

я бы не использовать этот код на всех:

<?php 
function encrypt($pass){ 
    // use blowfish algorithm 10 times # blowfish != bcrypt 
    $hash_format="$2a$10$"; 
    $salt_length=22; 
    $salt = generate_salt($salt_length); 
    // store this in DB 
    $format_and_salt = $hash_format . $salt ; 
    $hash = crypt($pass, $format_and_salt); 
    return $hash; 
    } 

function generate_salt($length){ 
    // return 32 character random string 
    $unique_string = md5(uniqid(mt_rand(), true)); # Insecure RNG 
    // provides valid characters 
    $base64_string = base64_encode($unique_string); 
    // replaces + with . 
    $mod_base64_string = str_replace('+', '.', $base64_string); 
    // make string correct length 
    $salt = substr($mod_base64_string, 0, $length); 
    return $salt; 
} 

Вместо use the password hashing API. Нет причин изобретать велосипед здесь.

$hash = password_hash($yourPassword, PASSWORD_DEFAULT); 
if (password_verify($yourPassword, $hash)) { 
    // Login successful 
} 

Использование PHP 4.3

Don't use PHP 4. Если вы это сделаете, вы полностью по своему усмотрению.

 Смежные вопросы

  • Нет связанных вопросов^_^