业务功能开发-登录(一)
最近在學習JFinalUIB,很多東西粗略看過,卻做不到深刻理解,就像泰戈爾說的一樣,真的留不下痕跡~~~
天空中不留下飛鳥的痕跡,但我已飛過(I leave no trace of wings in the air,but I am glad I have had my flight.)
但是學習這回事,我想還是值得留下鳥屎的,肥沃了土地,長出了花草,需要的時候沿著花草就找到了。這里做一下讀書筆記,因為用的就是JFinalUIB框架,很多東西都董華健老師寫好了的,所以我這里所謂的筆記,也就是在JFinalUIB的基礎上加上一點自己的理解。(話說JFinalUIB極速開發實戰這本書市價55.55而且還只有電子版的真的好貴的說~不過對我等凡人還是很有幫助的,感謝董華健老師~~~)
加鹽+加密
正常人考慮登錄的情況應該就是,用戶密碼需要具有隱私性,不好被人知道的,至于其他人的不需要加密,或者根本不需要密碼就不在考慮之列了。
通常情況下,為了保證用戶賬號信息的安全,一般會將用戶的密碼信息,加密后存儲到數據庫,不會存儲明文密碼。
如何保證用戶登錄時提交密碼已經加密?
直接對重要數據進行MD5處理后,反向解密確實難度很大,但還是可以找出破綻的,可以查看數據庫,如果別人的密碼加密后和自己的一樣,就可以登錄別人的賬戶的,那么我們以前的加密方法是否對這種行為失效了呢?其實只要稍微混淆一下就能防范住了,這在加密術語中稱為“加鹽”。具體來說就是在原有材料(用戶自定義密碼)中加入其它成分(一般是用戶自有且不變的因素),以此來增加系統復雜度。當這種鹽和用戶密碼相結合后,再通過摘要處理,就能得到隱蔽性更強的摘要值。
先加鹽,再加密
鹽可以用用戶名,或者是用戶注冊時的郵件,注冊時間等非空信息(如果是空信息這個加鹽處理會失效)。
存儲
密碼存儲:這里,用戶的密碼信息時使用PBKDF 2加密后存儲的,PBKDF 2是一種不可逆加密算法。在存儲前會先生成一個密碼鹽,然后使用它來加密密碼,最終得到加密的密文,并且同時存儲到用戶表中,這個過程是不可逆的。
demo:userService.java
save
// 密碼加密 byte[] salt = ToolPbkdf2.generateSalt();// 密碼鹽 byte[] encryptedPassword = ToolPbkdf2.getEncryptedPassword(password, salt); user.set(User.column_salt, salt); user.set(User.column_password, encryptedPassword); // 保存用戶信息 userInfo.save(); // 保存用戶 user.set(User.column_userinfoids, userInfo.getPKValue()); user.set(User.column_errorcount, 0); user.set(User.column_status, "1"); user.save(); // 緩存 User.dao.cacheAdd(user.getPKValue());
總結
以上是生活随笔為你收集整理的业务功能开发-登录(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [wc2013]糖果公园(70分)by小
- 下一篇: Ubuntu 更换下载源