我正在创建一个编辑信息页面,但是当我调用密码数据时,它是加密的。有没有办法解密它?
这是我的代码,
<?php
require 'dbfunction.php';
$con = getDbConnect();
if (mysqli_connect_errno($con)) {
"Failed to connect to MySQL: " . mysqli_connect_error();
} else {
$result = mysqli_query($con, "SELECT * FROM admininfo where name = xyz");
while ($admininfo = mysqli_fetch_array($result)) {
?>
<div class="container">
<div class="row">
<center>
<h2>Edit Info Administrator</h2>
</center>
<form>
<div class="form-group">
<label class="col-sm-2 control-label">Name</label>
<div class="col-md-10">
<input type="text" class="form-control" value="<?php echo $admininfo['name']; ?>" name="name">
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">Password</label>
<div class="col-md-10">
<input type="password" class="form-control" placeholder="<?php echo $admininfo['password']; ?>" name="password">
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">Comfirm Password</label>
<div class="col-md-10">
<input type="password" class="form-control" placeholder="Confirm Password" name="confirmpassword">
</div>
</div>
<div class="form-group">
<div class="col-sm-10 col-sm-offset-2">
<input type="submit" value="edit account" class="btn btn-primary">
</div>
</div>
</form>
</div>
</div>
<?php } mysqli_close($con); } ?>
当前显示名称,仅
无法从您提供的代码中判断密码是如何加密的。
如果操作正确,那么密码将使用盐和哈希算法存储,而不是任何类型的可逆加密。在这种情况下,答案将是"否"。
您永远不需要找出密码是什么,只需设置一个新密码或将提交的密码与现有密码进行比较即可。后一种情况是通过相同的哈希算法运行提交的密码并比较两个哈希来处理的。
您的管理员可能也不应该直接设置新密码,他们应该有权访问一个功能,该功能向用户发送一个仅供使用的令牌,他们可以使用该令牌自己设置新密码。
这是一个坏主意。目前,您将$admininfo['password']
显示为占位符。这意味着它的字符将在屏幕上实际可见,即使您输入的类型是密码。任何从你肩膀上看的人都能看到它。别这样。
密码应仅经过哈希处理和加盐存储在数据库中。有一种方法可以检查某个明文是否是原始密码,但没有办法解密哈希(除了蛮力)。这样做是出于明显的安全原因。
看看 password_hash() 和 password_verify()。