从php页面:http://php.net/manual/en/function.password-hash.php
PASSWORD_DEFAULT - 使用bcrypt算法(默认自PHP 5.5.0起)。请注意,此常量旨在随着时间的推移而变化,因为新的和更强大的算法被添加到PHP中。因此,使用此标识符的结果长度可能会随时间而变化。因此,建议将结果存储在数据库列中,该列可以扩展到超过60个字符(255个字符将是一个不错的选择)。
这是否意味着如果我<div class="block-section text-center ">
<img src="images/<?php echo($_SESSION['user'][14]) ?>" class="img-rounded" alt="">
<div class="white-space-20"></div>
<h4><a href="perfil.php"><?php echo($_SESSION['user'][3]) ?></a></h4>
<div class="white-space-20"></div>
<ul class="list-unstyled">
<li><a href="mensajes.php"> Messages </a></li>
<li><a href="notificaciones.php"> Notifications<?php here is where I want the total of the query ?></a></li>
<li><a href="cambio.php"> Change password</a></li>
</ul>
<div class="white-space-20"></div>
</div>
</div>
<div class="col-md-9 col-sm-9">
<!-- Block side right -->
使用更新版本的密码,例如PHP8,它可能无法正确解密存储的密码?或者已经安全地嵌入了所有信息,我所要做的就是将password_verify
的输出存储到我的数据库中,只需调用password_hash
进行验证而不用担心?
答案 0 :(得分:2)
这是否意味着如果我
password_verify
使用更新版本的密码,例如PHP8,它可能无法正确解密存储的密码?
没有。密码哈希包括有关实际使用哪种特定算法的信息。如果PHP的未来版本支持多个密码散列算法,它将能够从旧散列中读取该信息以找出如何重现它。
(具体而言,所有哈希值当前存在的$2y$
前缀表示它们是使用PASSWORD_BCRYPT
算法生成的。未来的任何算法都将使用不同的前缀。)
答案 1 :(得分:1)
是的,所有信息都是安全嵌入的,只要您的数据库没有截断加密密码。我认为这几乎是一个给定的。
警告回家的原因是,为了您未来的自身,您可以将信息存储在长度灵活的字段中。从历史上看,与MD5一样,人们可能选择了VARCHAR(255)
。但是对于bcrypt,你需要选择更灵活的东西。那可能是:
CHAR(60)
int asInt = 1234;
byte asByte[2];
asByte[0] = asInt >> 8;
asByte[1] = asInt & 0xFF;
,此列是表中的 last ,因此延长其长度可能不需要RDBMS重新调整表。