shiro_08_加密

shiro封裝了很多加密的手段,這一篇來介紹其中的Base64加密,與現在比較流行的md5加密

在shiro的核心包裏封裝了很多加密的算法:

 

這些加密方法都是封裝好的,可以直接用;

	/**
	 * Base64加密
	 * @param str
	 * @return
	 */
	public static String encBase64(String str) {
		return Base64.encodeToString(str.getBytes());
	}
	/**
	 * Base64解密
	 * @param str
	 * @return
	 */
	public static String decBase64(String str) {
		return Base64.decodeToString(str);
	}
	/**
	 * md5加密
	 * @param str
	 * @return
	 */
	public static String md5(String str,String salt) {
		return new Md5Hash(str, salt).toString();
	}
	public static void main(String[] args) {
		String password="1234";
		String salt="java";
		System.out.println(CryptographyUtil.encBase64(password));
		System.out.println(CryptographyUtil.decBase64(CryptographyUtil.encBase64(password)));
		System.out.println(CryptographyUtil.md5(password,salt));
	}

下面來說一下md5加密,shiro提供了加密的3種方式:

第一種時直接給一個String加密,但是這種方法,現在可以通過碰撞,以及MD5庫,有些是可以解密的,

第二種時在加密時加入鹽,增加了加密的複雜度,這樣在不提供鹽的情況下,理論上這種md5加密時不可逆的。

第三種是在加鹽的基礎上,又加入了一個進行散列的次數,這樣又大大增加了加密的複雜度,使加密更安全,但是缺點就是加密的時間有點長。

一般我們採用MD5加密的時候,當用戶註冊用戶後,密碼隨之加密存到數據庫裏,即使有一天數據庫的密碼泄露了,數據庫裏的密碼仍然時加密不可破解的,在登錄時,用戶輸入的密碼,在經過加密,後與數據庫裏的是否一致來判斷密碼是否正確,因爲兩次加密後的密碼肯定時一樣的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章