日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Java簡易登錄注冊功能實現代碼解析

瀏覽:111日期:2022-08-31 08:38:42

哈希算法(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>(),避免NullPointerExceptionuserInfoSet = new HashSet<String>();}if (userInfoSet.contains(getUserInfoHashCode(userInfo))) { // 判斷是否含有相關用戶信息tips = '登錄成功!';} else {tips = '登錄失敗!請檢查用戶名或密碼';}return tips;}/** * 用戶注冊。若用戶名不存在,則注冊成功;若用戶名存在,則注冊失敗 * * @param userInfo * @return 提示信息 */public String userSignUp(UserInfo userInfo) {Set<String> userInfoSet = null;Set<String> userNameSet = null;String tips;userInfoSet = dao.readInfo(userInfoPath); // 從相關文件中讀取用戶信息userNameSet = dao.readInfo(userNamePath); // 從相關文件中讀取用戶名if (userInfoSet == null) { // 若尚無用戶注冊,則new HashSet<String>(),避免NullPointerExceptionuserInfoSet = new HashSet<String>();}if (userNameSet == null) { // 若尚無用戶注冊,則new HashSet<String>(),避免NullPointerExceptionuserNameSet = new HashSet<String>();}if (userNameSet.add(userInfo.getUserName())) { // 判斷用戶名是否已注冊userInfoSet.add(getUserInfoHashCode(userInfo)); // 若用戶名未注冊,則將用戶信息添加至Set中dao.saveInfo(userInfoSet, userInfoPath); // 保存用戶信息到相關文件dao.saveInfo(userNameSet, userNamePath); // 保存用戶名到相關文件tips = '注冊成功!';} else {tips = '注冊失敗!用戶已存在';}return tips;}/** * 以預設算法SHA-1加密用戶名和密碼,以預設基數36位保存 * * @param userInfo * @return 加密后的用戶信息 */public String getUserInfoHashCode(UserInfo userInfo) {return getUserInfoHashCode(userInfo, 'SHA-1', 36); // 用SHA-1算法生成用戶信息密鑰,進制為36進制}/** * 以指定算法algorithm加密用戶名和密碼,以指定基數radix長度保存 * * @param userInfo * @param algorithm * @param radix * @return 加密后的用戶信息 */public String getUserInfoHashCode(UserInfo userInfo, String algorithm, int radix) {try {MessageDigest md = MessageDigest.getInstance(algorithm); // 用指定算法algorithm創建一個MessageDigest實例md.update((userInfo.getUserName() + userInfo.getUserPassword()).getBytes('UTF-8')); // 將用戶名和密碼合并,調用update()輸入數據byte[] res = md.digest(); // 將摘要存放在byte[]中return new BigInteger(1, res).toString(radix); // 返回一個指定進制基數為radix的字符串} catch (Exception e) {e.printStackTrace();return ''; // 若異常則返回空字符串}}}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
91看片一区| 欧美国产美女| 色综合狠狠操| 老牛影视一区二区三区| 精品国产精品国产偷麻豆| 国产一区二区三区四区| 国产伦理一区| 久久一区二区三区喷水| www.九色在线| 亚洲一区二区三区在线免费| 成人免费电影网址| 日韩av一区二| 亚洲精品影视| 国产偷自视频区视频一区二区| 激情黄产视频在线免费观看| 综合在线一区| 亚洲婷婷丁香| 亚洲另类av| 丝袜美腿一区二区三区| 91精品国产经典在线观看| 国产精品亚洲欧美日韩一区在线| 中国女人久久久| 亚洲三级毛片| 99热国内精品| 国产精品黄网站| 久久理论电影| 另类激情亚洲| 欧美一区二区性| 欧美日韩一二三四| 99精品一区| 国产视频一区欧美| 四虎成人av| 日韩国产一区二| 日韩一区二区在线免费| 另类av一区二区| 欧美一区91| 亚洲精品网址| 国产精品久久| 国产精品黄网站| 韩国女主播一区二区三区| 久久久久99| 久久久久美女| 99精品视频在线| 夜夜嗨一区二区| 亚洲深爱激情| 国产精品xxx| 亚洲综合专区| 精品理论电影在线| 蜜桃视频一区二区| 欧美sss在线视频| 亚洲精品**中文毛片| 中文字幕日韩高清在线 | 中文在线一区| 国产精品极品| 欧美成人日韩| 麻豆中文一区二区| 亚洲激情另类| 精品99在线| 欧美日韩亚洲在线观看| 亚洲激情婷婷| 欧美国产另类| 国产一区二区精品| 91福利精品在线观看| 国产一区丝袜| 国产精品激情电影| 婷婷综合电影| 国产不卡人人| 99久久99视频只有精品| 亚洲一区成人| 成人午夜国产| av资源中文在线| 超碰超碰人人人人精品| 日韩有吗在线观看| se01亚洲视频| 日韩精品欧美成人高清一区二区| 欧美天堂一区| 石原莉奈在线亚洲二区| 免费精品视频| 国产99精品| 日韩欧美一区二区三区在线视频 | se01亚洲视频 | 欧洲在线一区| 国产欧美一区二区三区精品观看| 国产综合色产| 亚洲精品一级二级三级| 久久国产视频网| 最新中文字幕在线播放| 999国产精品视频| 99视频在线精品国自产拍免费观看| 丝袜美腿成人在线| 欧美亚洲专区| 久久婷婷久久| 日本午夜精品久久久久| 91视频一区| 亚洲大片在线| 国产精品麻豆成人av电影艾秋| 91精品一区二区三区综合在线爱 | 日韩av有码| 激情综合网五月| 亚洲2区在线| av一区在线| 美美哒免费高清在线观看视频一区二区| 欧美成人综合| 国产成人精品福利| 久久先锋影音| 欧美成人亚洲| 丰满少妇一区| 综合一区在线| 亚洲精品成人| 久久三级视频| sm捆绑调教国产免费网站在线观看| 亚洲精一区二区三区| 成人久久一区| 国产精品qvod| 亚洲精品小说| 国精品产品一区| 在线视频亚洲欧美中文| 在线天堂中文资源最新版| 国产欧美三级| 亚洲精品九九| 日韩影院精彩在线| 女同性一区二区三区人了人一| 国产白浆在线免费观看| 国模精品一区| 国产精品99久久久久久董美香| 国产欧美日韩视频在线| 欧美日韩精品一区二区三区视频| 香蕉成人久久| 亚洲欧洲日韩精品在线| 日本一区中文字幕| 国产九一精品| 日韩福利在线观看| 国产亚洲第一伦理第一区| 欧美亚洲三级| 高潮一区二区| 99国产精品一区二区| 亚洲欧美日韩一区在线观看| 亚洲精品一区二区妖精| 亚洲精品888| 亚洲人成高清| 亚洲高清影视| 狠狠干成人综合网| 午夜在线播放视频欧美| 日本在线一区二区三区| 日本亚州欧洲精品不卡| 精品国产黄a∨片高清在线| 亚洲91网站| 国产精品男女| 亚洲va中文在线播放免费| 国模大尺度视频一区二区| 欧美日韩一二| 欧美日本不卡高清| 久久av资源| 午夜亚洲福利在线老司机| 国产精品一区二区精品视频观看| sm捆绑调教国产免费网站在线观看| 麻豆一区二区三| 成人精品天堂一区二区三区| 久久国产电影| 亚洲涩涩av| 黄色精品视频| 欧洲激情综合| 日韩一区二区三免费高清在线观看| 偷拍亚洲精品| 久久久蜜桃一区二区人| 日韩二区三区四区| www成人在线视频| 日韩美女国产精品| 精品一区二区三区中文字幕在线| 欧美不卡高清一区二区三区| 天堂va在线高清一区| 裤袜国产欧美精品一区| 亚洲欧美专区| 影视先锋久久| 美女视频黄久久| 欧美日韩91| 国产韩日影视精品| 精品国产成人| 欧美欧美黄在线二区| 日本欧美不卡| 开心激情综合| 欧美一区二区三区免费看| 激情国产在线| 欧美黄色精品| 日韩欧美三区| 国产精品tv| 青青青国产精品| 六月丁香综合| 99亚洲精品| 爽好久久久欧美精品| 亚洲高清毛片| 国产一区二区三区探花| 国产精品一区二区三区av| 亚洲精品观看| 一区二区电影在线观看| 亚洲成人精品| 五月综合激情| 三级欧美在线一区| 日韩中文字幕1| 日韩专区欧美专区|