密碼加密
一般在數據庫中存儲明文的密碼是不安全的,一般在項目中都會對密碼進行加密密碼。加密肯定需要加密算法。加密算法分兩大類,一大類是可逆加密,另外一大類不可逆加密。可逆加密分兩類,一類是對稱加密,另外一類是非對稱加密。可逆加密一般都有公鑰和私鑰,一般對稱加密的私鑰在客戶端和服務器端都是一致的。非對稱加密私鑰在客戶端和服務器端是不一樣的。非可逆加密,有一個比較牛的美國人說過,任何加密算法的安全性都要建立在你的源碼已經被別人獲取的情況下還算安全,那這種加密算法才算成功的。這就是非可逆加密。常用的非可逆加密算法有MD5和SHA1 ,SHA256等等。這些加密算法一般都是采用散列運算來實現的。
/** * 測試非可逆加密算法 */ public class PasswordUtil { public static void main(String[] args) { String str = "123456"; //第一個參數代表加密使用的算法 第二個參數要加密的字符串 第三個參數 加入的鹽的值 第四個參數 hash迭代的次數 //以后再保存用戶的密碼應該使用加密算法加密 SimpleHash simpleHash = new SimpleHash("md5",str,"123",10); String code = simpleHash.toString(); System.out.println("加密后的密文:"+code); } }
密碼加密存儲之后,在使用shiro做校驗的時候,應該在realm中做如下配置:
在自定義的realm中,傳入用戶密碼項對應的鹽值:
