mysql select returns sha1 散列密码为空
mysql select returns empty on sha1 hashed password
我正在测试使用 sha1 进行散列并且我插入了一行 :
insert into tbl_user (username, password, email) values ('maysam', sha1('21lf892'), 'gerdakan.sa@gmail.com');
当我想 select 一行时,就像使用 :
select * from tbl_user where password = sha1('21lf892');
结果是:
Empty set (0.00 sec)
但如果我尝试 select 使用 用户名 :
select * from tbl_user where username = 'maysam';
+----+----------+--------------------------------+-----------------------+
| id | username | password | email |
+----+----------+--------------------------------+-----------------------+
| 2 | maysam | dd989b1d1d67c6e706852024ccb6a1 | gerdakan.sa@gmail.com |
+----+----------+--------------------------------+-----------------------+
有什么问题?为什么它不能 select?(我已经使用 md5 和 sha2 测试了散列和 selecting....
一个 sha1 散列是 160 位,即以这种方式格式化时为 40 个字符。
您的 table 似乎将密码列的长度设置为小于此值,因此数据在插入时被截断并且不再等于 sha1('21f892')
。
顺便说一句,未加盐的 SHA1 哈希是一种非常弱的密码存储方式。更喜欢 bcrypt 或 scrypt 之类的东西。
我正在测试使用 sha1 进行散列并且我插入了一行 :
insert into tbl_user (username, password, email) values ('maysam', sha1('21lf892'), 'gerdakan.sa@gmail.com');
当我想 select 一行时,就像使用 :
select * from tbl_user where password = sha1('21lf892');
结果是:
Empty set (0.00 sec)
但如果我尝试 select 使用 用户名 :
select * from tbl_user where username = 'maysam';
+----+----------+--------------------------------+-----------------------+
| id | username | password | email |
+----+----------+--------------------------------+-----------------------+
| 2 | maysam | dd989b1d1d67c6e706852024ccb6a1 | gerdakan.sa@gmail.com |
+----+----------+--------------------------------+-----------------------+
有什么问题?为什么它不能 select?(我已经使用 md5 和 sha2 测试了散列和 selecting....
一个 sha1 散列是 160 位,即以这种方式格式化时为 40 个字符。
您的 table 似乎将密码列的长度设置为小于此值,因此数据在插入时被截断并且不再等于 sha1('21f892')
。
顺便说一句,未加盐的 SHA1 哈希是一种非常弱的密码存储方式。更喜欢 bcrypt 或 scrypt 之类的东西。