[英]Simple username and password validation java
我正在嘗試創建我的第一個登錄頁面作為學習練習。
例如,我的計划是使用用戶名的鹽預先散列密碼。 將其存儲在文本文件中,然后當用戶登錄時,我將使用相同的鹽散列密碼並將結果與文本文件進行比較。
我是安全等方面的完整初學者,所以我不知道這是否安全? 小型應用程序的標准是什么? 如果不推薦使用這種方法,那么合適的簡單替代方法是什么?
編輯一種可能的解決方案,如果我可以讓它工作。
String unpwfield;
unpwfield = userId.getText()+passwordfield.getText();
if (BCrypt.checkpw(unpwfield, passwordhash))
System.out.println("It matches");
else
System.out.println(userId.getText()+passwordfield.getText());
對於密碼存儲,您將需要使用慢散列算法。 加密哈希太快,並且不會在離線密碼猜測中減緩攻擊者的速度。 例如, bcrypt通常是最適合使用的算法。
Bcrypt 生成自己的鹽,因此您無需擔心生成這些鹽的安全方法。
我會避免使用用戶名作為鹽。 如果多次使用,salt 是為了避免使用相同的字節表示存儲相同的密碼。
原因是如果用戶重復使用相同的密碼,那么任何能夠看到密碼哈希數據的攻擊者都會立即發現這一點。 此外,如果您的系統是公開可用的,那么您的應用程序的每個實例都將以完全相同的方式存儲admin
用戶的哈希值,這意味着攻擊者將能夠以admin
作為鹽預先構建彩虹表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.