【问题标题】:Anorm & MySQL SHA1 password encrytion is not same with Mysql Workbench commandAnorm & MySQL SHA1 密码加密与 Mysql Workbench 命令不同
【发布时间】:2015-08-26 21:15:06
【问题描述】:

在我的 Play Framework Scala 项目中,我使用 MySQL 作为数据库。在我的数据库中,我有一个名为 PASSWORD 的列。当他们在我的项目中创建新用户时,我会将用户密码存储在此列中。我在插入用户值时对密码字段使用SHA1 加密。如果我从 MySQL Workbench 直接在我的数据库中运行该命令,它会将不同的加密字符串存储在我的 PASSWORD 列中。

在 MySql Workbench 中运行命令

INSERT into user('PASSWORD') VALUES(SHA1('hello'));

这个 SQL 查询在 PASSWORD 字段中插入 aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d 这个字符串

项目中的 INSERT 命令

def insert(password: String) = {
    DB.withConnection { implicit connection =>
      SQL(
        """
          insert into user(PASSWORD) 
          values (
            SHA1('{password}')
          )
        """
      ).on(       
        'password -> password       
      ).executeUpdate()
    }
  }

此插入操作将PASSWORD 值存储为f0e2d8610edefa0c02b673dcac7964b02ce3e890

我面临什么问题

将我的PASSWORD从项目存储值更新为aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d密码hello

SELECT USERNAME from USER WHERE PASSWORD = SHA1('hello') 

此查询在我的项目中返回 null,因为它将 SHA1('hello') 视为 f0e2d8610edefa0c02b673dcac7964b02ce3e890

【问题讨论】:

  • 使用 Anorm 2.3+,SQL"INSERT INTO user (PASSWORD) VALUES ($password)" 不那么冗长。
  • @Peanut 的回答是正确的,因为您错误地使用了准备好的语句。但是 SHA-1 散列不再被认为是安全的。考虑在应用程序级别而不是数据库级别使用像 jbcrypt 这样的库来对密码进行加盐+哈希处理。
  • @m-z 我以后会用到它。谢谢你的信息。

标签: mysql scala mysql-workbench anorm


【解决方案1】:

f0e2d8610edefa0c02b673dcac7964b02ce3e890{password} 的 SHA-1 哈希。

您需要删除 {password} 周围的引号 (') 才能使其正常工作:

def insert(password: String) = {
    DB.withConnection { implicit connection =>
      SQL(
        """
          insert into user(PASSWORD) 
          values (
            SHA1({password})
          )
        """
      ).on(       
        'password -> password       
      ).executeUpdate()
    }
  }

否则框架会将{password} 解释为字符串而不是变量,因此会计算{passowrd} 的哈希值而不是hello

【讨论】:

  • 是的,你是对的。它解决了我的问题。非常感谢。
  • 如果此答案解决了您的问题,您可以将其标记为“已接受”,以便其他人认为它对您有用(我当然会获得额外的声誉;))
  • 对不起,我实际上对答案投了赞成票,但我确实忘记接受你的答案。
猜你喜欢
  • 2014-03-26
  • 1970-01-01
  • 2013-02-08
  • 2015-08-05
  • 2022-07-23
  • 1970-01-01
  • 2011-03-03
  • 1970-01-01
  • 2012-06-26
相关资源
最近更新 更多