Вставить зашифрованный пароль в PHP в mysql


я сделал регистрационную форму, и я хочу, чтобы пароль хранился в зашифрованном виде в mysql, мое сомнение в том, нужно ли мне конкретное поле bd для хранения пароля? Мой код для шифрования pass это:

<?php
    $usuario = $_POST['nombre'];
    $pass = $_POST['pass'];
    if (isset($usuario) && isset($pass)) {
        if (strlen($pass)>= 8) {
            //ciframos la contraseña
            $secreto = "Hecho por Rafael Aybar Segura";
            $passcif = hash_hmac('sha1',$pass,$secreto);
            //conectamos a la bd (las contraseñas son de prueba, hay que sustituirlas por otras más seguras)
            $conexion = mysqli_connect("localhost","root","") or
                        die("conexión errónea");
            mysqli_select_db ($conexion, "mantis")
                        or die ("no se puede seleccionar la BD" );
                    }
            //realizamos la consulta para registrar al usuario

        else {
            die("La contraseña ha de ser de 8 caracteres o más");
        }
    }
    else {
        die("Debes introducir todos los campos");
    }
?>
Author: ras212, 2017-02-28

2 answers

Доброе утро!

Нет, вам не нужно специальное поле. Это может быть просто поле типа varchar, где вы будете хранить результат хэш-функции.

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

Надеюсь, я помог!

 3
Author: Ignacio, 2017-02-28 13:45:32

В дополнение к остальным комментариям. Если вы используете версию PHP выше 5.5, вы должны использовать функцию password_hash(http://php.net/manual/en/function.password-hash.php) вместо функции hash_mac, указывающей алгоритм для использования.

Кроме того, алгоритм SHA1 не рекомендуется. Вы можете получить "легко" пароли, зашифрованные с помощью.

И в этом случае вы должны создать поле не менее 60 символов и, возможно, 255.

, Если вы делаете это так ваш код для генерации ключей будет выглядеть так:

$passcif = password_hash($pass, \PASSWORD_DEFAULT);

Надеюсь, это поможет вам

 0
Author: Moisés Márquez, 2018-01-29 18:28:07