Anorm & MySQL SHA1 密码加密与 Mysql Workbench 命令不同
Anorm & MySQL SHA1 password encrytion is not same with Mysql Workbench command
在我的 Play Framework Scala 项目中,我使用 MySQL 作为数据库。在我的数据库中,我有一个名称为 PASSWORD
的列。当他们在我的项目中创建新用户时,我会将用户密码存储在此列中。我在插入用户值时对密码字段使用 SHA1
加密。如果我 运行 直接在我的数据库中从 MySQL Workbench 命令,它将在我的 PASSWORD
列中存储不同的加密字符串。
命令 运行 在 MySql Workbench
INSERT into user('PASSWORD') VALUES(SHA1('hello'));
this SQL Query insert aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d
this string in PASSWORD
field
来自项目的 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')
这个查询 returns null
在我的项目中,因为它将 SHA1('hello')
视为 f0e2d8610edefa0c02b673dcac7964b02ce3e890
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
的散列。
在我的 Play Framework Scala 项目中,我使用 MySQL 作为数据库。在我的数据库中,我有一个名称为 PASSWORD
的列。当他们在我的项目中创建新用户时,我会将用户密码存储在此列中。我在插入用户值时对密码字段使用 SHA1
加密。如果我 运行 直接在我的数据库中从 MySQL Workbench 命令,它将在我的 PASSWORD
列中存储不同的加密字符串。
命令 运行 在 MySql Workbench
INSERT into user('PASSWORD') VALUES(SHA1('hello'));
this SQL Query insert aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d
this string in PASSWORD
field
来自项目的 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')
这个查询 returns null
在我的项目中,因为它将 SHA1('hello')
视为 f0e2d8610edefa0c02b673dcac7964b02ce3e890
f0e2d8610edefa0c02b673dcac7964b02ce3e890
是 {password}
.
您需要删除 {password}
周围的引号 ('
) 才能使其正常工作:
def insert(password: String) = {
DB.withConnection { implicit connection =>
SQL(
"""
insert into user(PASSWORD)
values (
SHA1({password})
)
"""
).on(
'password -> password
).executeUpdate()
}
}
否则,框架将 {password}
解释为字符串而不是变量,因此计算 {passowrd}
而不是 hello
的散列。