我正在创建一个编辑信息页面,但是当我调用密码的数据时,它是加密的。有没有办法让我解密它?
这是我的代码
<?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); } ?>
当前正在显示名称,只有密码是加密的。
发布于 2015-02-03 23:25:36
从您提供的代码中,无法知道密码是如何加密的。
如果操作得当,那么密码将使用a salt and a hashing algorithm存储,而不是任何类型的可逆加密。在这种情况下,答案将是“不”。
你永远不需要知道密码是什么,只需要设置一个新的密码,或者将提交的密码与现有的密码进行比较。后一种情况是通过使用相同的散列算法运行提交的密码并比较两个散列来处理的。
你的管理员可能也不应该直接设置新密码,他们应该有权访问一个功能,该功能可以通过电子邮件向用户发送一个只能使用的令牌,他们可以使用该令牌来设置新密码。
发布于 2015-02-03 23:25:59
这不是个好主意。当前,您将$admininfo['password']显示为占位符。这意味着它的字符实际上将在屏幕上可见,即使您输入的是密码类型也是如此。任何从你背后看的人都能看到它。不要这样做。
密码应该只存储在数据库中进行哈希和加盐处理。有一种方法可以检查某个明文是否是原始密码,但没有方法解密散列(除了暴力破解)。这样做是出于显而易见的安全原因。
看看password_hash()和password_verify()吧。
https://stackoverflow.com/questions/28302473
复制相似问题