【问题标题】:MD5 Encrypt all the password in a tableMD5加密表中的所有密码
【发布时间】:2011-09-11 21:22:41
【问题描述】:

我有一个名为 user 的数据库表,其中有一些列。其中一列是用户密码。

这个密码没有加密,我现在要做的是自动抓取该表中的所有用户和所有密码,加密它们,然后用新的加密密码更新表。

我能做什么?使用 PHP 循环?还是什么?

我有点迷路了..

您能否提供一个工作示例?

所以我从表中选择密码

$query="SELECT * FROM users";
$ar=mysql_query($query) or die("Error selecting accounts: ".mysql_error());
$ac = mysql_num_rows($ar);
while($arow = mysql_fetch_array($ar)) {
$password = $arow['Password'];
}
AND.......

在那之后我完全迷失了。

你能帮帮我吗?

谢谢

【问题讨论】:

  • 这是不可能的,因为 md5 不是加密的。
  • md5 是无法解密的哈希

标签: php mysql md5


【解决方案1】:

将此代码输入到 phpMyAdmin SQL 查询页面。首先登录 phpMyAdmin,然后选择 DB 和 table,然后单击“SQL”。然后你需要在字段中输入这个并提交:

UPDATE users SET password = MD5(CONCAT(password, user_id))

编辑

OP 想要实际的 PHP 代码:

$query = "UPDATE users SET password = MD5(CONCAT(password, user_id))";
$ok = mysql_query($query);

没有比这更清楚的了。您必须确保密码字段足够大以存储 md5 哈希。请记住,md5 哈希是 32 个字符长。

【讨论】:

  • 加盐:UPDATE users SET password = MD5(CONCAT(password, user_id))
  • 是的,使用盐!谢谢阿诺。你必须记住你使用了盐。 =)
  • 请注意,如果您运行此查询两次,您将永久丢失所有密码。如果您运行此查询,您将不得不更改任何使用密码列的客户端代码以期望 MD5 哈希而不是实际值。
  • 没有。我需要用 PHP 来做到这一点。这是用于我的一个 Web 应用程序的软件包升级。这么多不同的客户将不得不这样做,而且应该非常非常简单。有没有办法用 PHP 做到这一点?谢谢
  • @DiegoP 这是一个可以从 PHP 运行的查询。你不明白吗?这是一个非常愚蠢的问题。可怜的客户
【解决方案2】:

DiegoP 询问了用 PHP 执行此操作的方法,它来了(由于某种原因,我无法在此处添加评论..)

$db    = Do database connection here;
$query = "UPDATE users SET password = MD5(CONCAT(password, user_id))";
$doit  = mysql_query($query, $db);

编辑:如果想循环使用

<?php
$q = "SELECT * FROM users";
$s = mysql_query($q, $connection);

for ($i = 0; $i < mysql_num_rows($s); $i++) {
$uid = mysql_result($s, $i, "user_id");
$pass = mysql_result($s, $i, "password");
$s2 = mysql_query("UPDATE users SET password = MD5(CONCAT('".$pass."', '".$uid."')) WHERE user_id = '".$uid."'");
}
?>

【讨论】:

  • 好的,这很好。但是我如何自动做到这一点?在不知道要更新的用户 ID 的情况下。它应该发生在已经插入用户表中的每个用户身上。由于我不知道确切的用户 ID,因此我需要一种方法来为该表中已经存在的每个用户执行此操作。有没有办法用循环来做到这一点?或者是其他东西?谢谢
  • 是的,但我认为它已经自动完成了?它会自动从行中获取 user_id?
  • 我添加了循环,如果你想试试。
  • 因为 DiegoP 要求循环我做到了。仅仅为了提供帮助而将 -1 标记为不好。
猜你喜欢
  • 1970-01-01
  • 2015-01-13
  • 1970-01-01
  • 1970-01-01
  • 2021-04-10
  • 2011-10-24
  • 2015-05-01
  • 1970-01-01
  • 2011-07-14
相关资源
最近更新 更多