我有一个MySQL表格用于我的程序的登录信息。密码数据类型是varchar。当我尝试登录我的密码时,它并不在乎我的字符是小写字母还是大写字母。如果我输入正确的字母,它会将我登录。对此的解决方案是什么?非常感谢您的帮助密码错误...?
Q
密码错误...?
0
A
回答
1
这是因为在默认情况下是mysql case insensitive:
mysql> create table foo (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, bar VARCHAR(20));
Query OK, 0 rows affected (0.12 sec)
mysql> insert into foo values ('','Hello'),('','hello');
Query OK, 2 rows affected, 2 warnings (0.03 sec)
Records: 2 Duplicates: 0 Warnings: 0
mysql> select * from foo where bar = 'hello';
+----+-------+
| id | bar |
+----+-------+
| 1 | Hello |
| 2 | hello |
+----+-------+
2 rows in set (0.00 sec)
最简单的方法 - 到目前为止 - 是你的密码不是明文存储!加密或散列它们并存储散列/加密值。
一种简单的方式来存储哈希密码是使用内置md5
功能:
mysql> SELECT MD5('secret');
+----------------------------------+
| MD5('secret') |
+----------------------------------+
| 5ebe2294ecd0e0f08eab7690d2a6ee69 |
+----------------------------------+
1 row in set (0.40 sec)
然后,您的查询将是:
SELECT * FROM `sometable` WHERE `the_password` = MD5('secret');
注,这是一个单向散列 - 也就是说,你实际上不能得到哈希版本的字secret
。所以你不能使用在用户注册欢迎电子邮件中显示密码,例如。
MySQL支持几个encryption and hashing functions,你应该检讨。
+0
首先,感谢您answer.I'm新的Java和MySQL.can您张贴如何加密或哈希他们店? :) –
相关问题
- 1. SHA1密码加密错误
- 2. DotNetZip密码错误
- 3. SSL错误/ RSA预置密码错误
- 4. Laravel“密码错误”错误信息
- 5. Hadoop:无密码SSH错误
- 6. PHP密码验证错误
- 7. NodeJS - 需要错误密码
- 8. mysql用户密码错误
- 9. Biopython密码表错误?
- 10. re.search密码检查错误
- 11. 错误密码破译
- 12. 密码系统错误
- 13. JavaScript验证密码错误
- 14. 错误重置mysql密码
- 15. Java错误返回密码
- 16. Boost.spirit密码。编译错误
- 17. 解密代码错误
- 18. 更改密码错误
- 19. 密码检查错误
- 20. jQuery Form Validator密码错误
- 21. SSL_read解密错误代码
- 22. PostgreSQL的pg_dumpall密码错误
- 23. 密码功能错误
- 24. 小写密码错误
- 25. omniauth密码给invalid_credentials错误
- 26. System.Security.Cryptography.CryptographicException给出错误密码
- 27. Laravel密码重置错误
- 28. Laravel更新密码错误
- 29. glassfish主密码错误
- 30. 密码恢复错误
更详细些。你的问题含糊不清! –
不要将密码保存为纯文本 – Popnoodles