为什么即使没有输入也能获得加密结果?

时间:2014-04-19 21:39:22

标签: php html encryption

所以我只是在玩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>

运行示例时,我得到一个加密的结果。

enter image description here

即使没有输入。有任何想法吗?

2 个答案:

答案 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;);;