Это если вы используете salt
. sha256 использует алгоритм, который заключается только в одном: вы можете зашифровать строку, но не можете отменить операцию. Проблема состоит в том, что существуют базы данных с тоннами данных каждой возможной строки длиной до 12 символов, зашифрованных в различных системах шифрования, и вы можете получить исходную строку, выполнив запрос к базе данных в считанные секунды. Вот почему вы должны использовать соль.
Соль - это предопределенная длинная строка, используемая в качестве ключа, присоединенного к вашему паролю перед шифрованием. Поскольку @Jaquarh комментирует, вы должны создавать и хранить разные соли для каждого пользователя. Например, вы можете сгенерировать случайную строку.
Также вы должны использовать привязку данных к вашему запросу, чтобы предотвратить инъекции SQL.
В вашем коде вы можете сделать его намного более защищенным следующим образом:
$salt = substr(md5(rand()), 0, 20) //this will generate a 20 characters random string
$username = $_POST['username'];
$password= $_POST['password'].$salt;
$sPassword= hash('sha256',$password);
$ePassword= base64_encode($sPassword);
$insertSQLQuery = $conn->prepare("INSERT INTO tbl_users (username,password)
VALUES ('?','?')");
//You may want to validate your $username and $ePassword here
$insertSQLQuery->execute(array($username, $ePassword));
PD: помните, что вам нужно будет хранить эту соль для проверки пароля позже, когда пользователь входит в систему, например, вам нужно будет добавить соль к паролю, который пользователь ввел в форму входа в систему, перед шифрованием и запрос к базе данных