所以我只是在玩PHP试图创建一个加密词和解密系统。所以这是我的代码。
<!DOCTYPE HTML>
<html>
<body>
<h1>Encrypt</h1>
<form method="post" action="">
<input type="text" name="encrypt-in">
<input type="submit" name="submit">
<br>
<?php
$in = (isset($_POST['encrypt-in']) ? $_POST['encrypt-in'] : '');;
$hashedin = password_hash($in, PASSWORD_DEFAULT)."\n";
echo "Encrypted input: "."<br>"."$hashedin";
?>
</form>
<hr>
<h1>Decrypt</h1>
<form method="post" action="">
<input type="text" name="decrypt-in">
<input type="submit" name="submit">
</form>
<?php
$out = (isset($_POST['decrypt-in']) ? $_POST['decrypt-in'] : '');;
$hashedout = password_verify($out, PASSWORD_DEFAULT)."\n";
echo "Decrypted input: "."<br>"."$hashedout";
?>
</body>
</html>
运行示例时,我得到一个加密的结果。
即使没有输入。有任何想法吗?
答案 0 :(得分:1)
您正在使用的散列算法将为您提供空字符串的哈希值。
这是预期的行为。
答案 1 :(得分:0)
你需要添加这个条件!空($ _ POST [&#39;加密&#39;])
$ in =(isset($ _ POST [&#39; encrypt-in&#39;])&amp;&amp;!empty($ _ POST [&#39; encrypt-in&#39;]))? $ _POST [&#39;加密&#39;]:&#39;&#39;);;