没有合适的资源?快使用搜索试试~ 我知道了~
首页Java简易登录注册功能实现代码解析
资源详情
资源评论
资源推荐
Java简易登录注册功能实现代码解析简易登录注册功能实现代码解析
主要介绍了Java简易登录注册功能实现代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具
有一定的参考学习价值,需要的朋友可以参考下
哈希算法(Hash)又称摘要算法(Digest),它的作用是:对任意一组输入数据进行计算,得到一个固定长度的输出摘要。
哈希算法最重要的特点就是:
相同的输入一定得到相同的输出;
不同的输入大概率得到不同的输出。
哈希算法的目的就是为了验证原始数据是否被篡改。
我们来简单实现一个用于用户注册和登录最基本的功能。
在登录中,要检查是否存在某个用户信息,每个用户信息都是唯一的,所以可以借助Set的特性来操作用户信息的存放。
在注册中,要检查用户名是否已经被注册,而每个用户名也是唯一的,所以在这里也利用Set来操作用户名的存放。
当然,也可以用Map来存放用户名和用户密码,K存放用户名,对应的V存放密码。但是为了让用户名和密码的关联度尽可能
的小一些,所以利用两个Set来分别存放用户名和用户信息。
由于Set是无序的,所以当黑客获取到这两个数据文件的时候也很难将用户名对应到相应的用户信息。
这里的用户信息指的是将用户名和密码混合后的信息,例如某个用户的信息是"admin",密码是"password",那么可以将这两
个字段混合来达到增长信息量的目的。
当然,为了让安全性更高,可以利用特定的排列组合将两个字符串混合,比如可以将两个字符串拆解成字符数组,按照数组下
标的奇偶数来排列两个字符串。
例如"admin"的长度小于"password",因此以"admin"为基准,'a'为起始,"admin"占奇数位,"passw"占偶数位,剩余字符连接
在生成字段后,即"apdamsisnword",就像把用户名插入到了密码中。
还有一种方法是对每个生成的用户信息添加随机字符,这个方法被称为“加盐”。
例如,用户名和密码依然是"admin"和"password",我们设置一个随机salt = "aRandomSalt",然后将这个salt加入到用户名和
密码之中,比如"admin" + salt + "password",salt + "admin" + "password"或是其他更复杂的组合。
后续的代码中,简单的将用户名和密码连接在了一起,即"adminpassword"
package service;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.util.HashSet;
import java.util.Set;
import dao.Dao; // 储存相关配置文件
import dao.UserInfoDao; // 用于将用户信息存盘
import entity.UserInfo; // 用户信息实体类,其中的两个类成员是userName和userPassword,即用户名和密码
public class UserInfoService extends Dao {
private String userInfoPath; // 用户信息保存的文件路径
private String userNamePath; // 用户名保存的文件路径
private UserInfoDao dao = new UserInfoDao();
public UserInfoService() {
super();
userInfoPath = super.getResource().getString("userInfo");
userNamePath = super.getResource().getString("userName");
}
/**
* 用户登录。若用户信息存在,则登录成功;若用户信息不存在,则登录失败
*
* @param userInfo
* @return 提示信息
*/
public String userSignIn(UserInfo userInfo) {
Set<String> userInfoSet = null;
String tips;
userInfoSet = dao.readInfo(userInfoPath); // 从相关文件中读取用户信息
if (userInfoSet == null) { // 若尚无用户注册,则new HashSet<String>(),避免NullPointerException
userInfoSet = new HashSet<String>();
}
if (userInfoSet.contains(getUserInfoHashCode(userInfo))) { // 判断是否含有相关用户信息
weixin_38517212
- 粉丝: 8
- 资源: 952
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- 27页智慧街道信息化建设综合解决方案.pptx
- 计算机二级Ms-Office选择题汇总.doc
- 单链表的插入和删除实验报告 (2).docx
- 单链表的插入和删除实验报告.pdf
- 物联网智能终端项目设备管理方案.pdf
- 如何打造品牌的模式.doc
- 样式控制与页面布局.pdf
- 武汉理工Java实验报告(二).docx
- 2021线上新品消费趋势报告.pdf
- 第3章 Matlab中的矩阵及其运算.docx
- 基于Web的人力资源管理系统的必要性和可行性.doc
- 基于一阶倒立摆的matlab仿真实验.doc
- 速运公司物流管理模式研究教材
- 大数据与管理.pptx
- 单片机课程设计之步进电机.doc
- 大数据与数据挖掘.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论10