写在前面
之前做的系统中,涉及到用户注册以及登录合法性验证,都是通过Java和数据库结合,数据库仅负责存储和提供查询结果,所有的加密和判断都是通过Java进行。
但是,既然某些数据库系统本身提供了一些运算和处理函数,那么,可以使用这些内置的函数进行注册以及登录验证操作吗?
使用Java和数据库的结合
注册:
当获取到用户名之后,首先通过Java的加密方法,比如MD5进行加密,然后将用户名和加密之后的密码存储到数据库当中。
登录验证:
用户登录时,首先拿到的是用户名以及密码的明码。
通过用户名从数据库中获取到加密的密码。select password from t_login where username = '用户名'
将密码使用Java的MD5加密方式进行加密。
将加密之后的字符串与从数据库查询得到的密码进行比较。
仅仅使用数据库完成注册和登录验证
MySQL数据库提供dm5(str)函数,可以对字符串进行MD5加密,strsmp(str1,str2)函数可以对两个字符串进行比较,如果字符串内容相同,其结果为0
有了这两个函数,就可以将Java的加密和比较功能替换掉。具体的数据库操作如下:
mysql> create database thetest;
Query OK, 1 row affected (0.05 sec)
mysql> use thetest;
Database changed
mysql> create table loginlist(
-> username char(3) primary key,
-> password char(32));
Query OK, 0 rows affected (0.06 sec)
mysql> show create table loginlist \G
*************************** 1. row ***************************
Table: loginlist
Create Table: CREATE TABLE `loginlist` (
`username` char(3) NOT NULL,
`password` char(32) DEFAULT NULL,
PRIMARY KEY (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.03 sec)
mysql> # 将密码使用MD5加密并存储
mysql> insert into loginlist(username,password) values('001',md5('78954'));
Query OK, 1 row affected (0.05 sec)
mysql> select username,password as md5str from loginlist;
+----------+----------------------------------+
| username | md5str |
+----------+----------------------------------+
| 001 | c72acf0f229a870418f4ae988daef7aa |
+----------+----------------------------------+
1 row in set (0.03 sec)
mysql> # 模拟登录验证,用户名和密码是直接从前台表单接收的字符串
mysql> select strcmp((select password from loginlist where username = '001'),md5('78954')) as 比较结果;
+--------------+
| 比较结果 |
+--------------+
| 0 |
+--------------+
1 row in set (0.03 sec)
mysql> # 如果输入的用户名不存在
mysql> select strcmp((select password from loginlist where username = '005'),md5('78954')) as 比较结果;
+--------------+
| 比较结果 |
+--------------+
| NULL |
+--------------+
1 row in set (0.03 sec)
mysql> exit
Bye
C:\Windows\system32>
结语
关于仅仅使用数据库的内置函数进行操作,纯粹属于学习者的自我猜想,在性能和安全性方面还没有进行充分验证,在实际项目中还是要谨慎使用。也希望各位朋友能够帮助完善。