【问题标题】:Initial User Password Import to MYSQL初始用户密码导入 MYSQL
【发布时间】:2010-07-27 00:52:54
【问题描述】:

我继承了一个拥有大量用户群的网站。我的客户正在更新他们的记录,我需要将大约 900 个用户的一些预定密码导入 mysql 表。如果我通过 php 前端输入密码,我要导入的行似乎对密码进行了加密。我可以使用 phpMyAdmin 将所有密码导入表中,但是当我测试它们时它们不起作用,因为它们是未加密的格式。有没有办法在将密码导入表之前对其进行加密?

【问题讨论】:

    标签: php mysql passwords


    【解决方案1】:

    您的问题不是 100% 清楚,但我假设您的密码存储在 MySQL 加密的列中。

    为了在导入之前“加密密码”,您必须弄清楚正在使用的加密算法。这将涉及查看数据库架构和插入其中的代码、查找执行加密的位置以及识别算法。

    完成此操作后,请提前使用相同的算法来加密密码。

    【讨论】:

      【解决方案2】:

      您应该编写一个脚本来使用应用所期望的相同加密方法导入密码。

      您应该阅读 PHP 前端的源代码,以了解用于加密(或更可能是散列)密码的方法。在不研究他们的代码的情况下尝试猜测他们的方法是浪费时间。

      根据散列的方法,您也许可以将已导入的明文密码转换为散列版本,只需使用 SQL 更新。例如,如果它是 SHA1,那么你可以这样做:

      UPDATE accounts SET password = SHA(password)
      

      这将覆盖密码及其哈希值。请记住,哈希是可逆的,因此在尝试之前先备份数据库!

      我也推荐阅读无畏领袖的You're Probably Storing Passwords Incorrectly

      【讨论】:

      • 比尔,感谢站点使用的哈希方向是 md5。我在密码列上运行了 SQL 更新,它工作得很好。感谢您的帮助。
      • 很高兴为您提供帮助。请记住给帮助您的人投票并选择“接受的答案”。这是一件小事,但这就是在 Stack Overflow 上玩游戏的方式。 :-)
      【解决方案3】:

      已解决:

      更新用户 SET user_password = md5(user_password)

      感谢大家的意见。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-04-07
        • 2016-09-14
        • 2019-04-03
        • 2013-07-22
        • 2020-05-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多