如何在PHP中使用sha1加密密码

时间:2018-11-09 16:59:36

标签: php session encryption input

我正在尝试在PHP中学习密码加密,但是还不太了解。 因此,我试图在登录表单中使用/实现sha1加密。

正如您在这段代码中所看到的,我在if / else条件旁边使用了sha1并得到了一个错误。

<?php

$accountName = "accountuser";
$accountPass = "accountpass";

session_start();

if(isset($_SESSION['accountName'])) {
  echo "<h1>Welcome " .$_SESSION['accountName']."</h1>";

  header("Refresh: 3; url=index.php");
  include 'login.html';
  echo 'Logged in successfuly! <br> Logging in...';
}
  else {
    if($_POST['username']==$accountName && sha1$_POST['password']==$accountPass){

      $_SESSION['$accountName']=$accountName;

      header("Refresh: 3; url=index.php");

      echo 'Logged in successfuly! <br> Logging in...';
    }

    else {

      include 'login.html';

      echo "Wrong username!";

    }

  }

?>

1 个答案:

答案 0 :(得分:1)

密码哈希? 有一个功能。

虽然您可以使用诸如sha1()md5()之类的功能和其他功能来加密密码,但这并不是最佳做法,通常不建议这样做。

您应该为此使用PHP中的内置函数:

  • password_hash()
  • password_verify()

您需要像这样使用它们:

$password = $_POST['password'];
$hash = password_hash($password, PASSWORD_DEFAULT);

然后将$hash存储在数据库中。


要验证密码是否正确,请使用password_verify(),如下所示:

// $hash = stored hash in your database for the user
$password = $_POST['password']; // password put in by user attempting to login

password_verify($password, $hash);

password_verify()将根据密码是否正确返回TRUEFALSE。要检查,您可以执行以下操作:

if(!password_verify($password, $hash)) { //password incorrect }