加密,是以某種特殊的演算法改變原有的資訊資料,使得未授權的使用者即使獲得了已加密的資訊,但因不知解密的方法,仍然無法了解資訊的內容
資料加密的基本過程就是對原來為明文的檔案或資料按某種演算法進行處理,使其成為不可讀的一段**,通常稱為"密文",使其只能在輸入相應的金鑰之後才能顯示出本來內容,通過這樣的途徑來達到保護資料不被非法人竊取、閱讀的目的。該過程的逆過程為解密,即將該編碼資訊轉化為其原來資料的過程。
雙方使用的同乙個金鑰,既可以加密又可以解密,這種加密方法稱為對稱加密,也稱為單金鑰加密。
一對金鑰由公鑰和私鑰組成(可以使用很多對金鑰)。私鑰解密公鑰加密資料,公鑰解密私鑰加密資料(私鑰公鑰可以互相加密解密)。
單向加密是不可逆的,也就是只能加密,不能解密。通常用來傳輸類似使用者名稱和密碼,直接將加密後的資料提交到後台,因為後台不需要知道使用者名稱和密碼,可以直接將收到的加密後的資料儲存到資料庫
通常分為對稱性加密演算法和非對稱性加密演算法,對於對稱性加密演算法,資訊接收雙方都需事先知道密匙和加解密演算法且其密匙是相同的,之後便是對資料進行 加解密了。非對稱演算法與之不同,傳送雙方a,b事先均生成一堆密匙,然後a將自己的公有密匙傳送給b,b將自己的公有密匙傳送給a,如果a要給b傳送消 息,則先需要用b的公有密匙進行訊息加密,然後傳送給b端,此時b端再用自己的私有密匙進行訊息解密,b向a傳送訊息時為同樣的道理。
演算法描述
des(data encryption standard)
資料加密標準,速度較快,適用於加密大量資料的場合;
3des(triple des)
是基於des,對一塊資料用三個不同的金鑰進行三次加密,強度更高;
rc2和 rc4
用變長金鑰對大量資料進行加密,比 des 快;
idea(international data encryption algorithm)
國際資料加密演算法:使用 128 位金鑰提供非常強的安全性;
rsa由 rsa 公司發明,是乙個支援變長金鑰的公共金鑰演算法,需要加密的檔案塊的長度也是可變的;
dsa(digital signature algorithm)
數字簽名演算法,是一種標準的 dss(數字簽名標準);
aes(advanced encryption standard)
高階加密標準,是下一代的加密演算法標準,速度快,安全級別高,目前 aes 標準的乙個實現是 rijndael 演算法;
blowfish
它使用變長的金鑰,長度可達448位,執行速度很快;
md5 (message-digest algorithm)
訊息摘要演算法,一種被廣泛使用的密碼雜湊函式,可以產生出乙個128位(16位元組)的雜湊值(hash value),用於確保資訊傳輸完整一致
@test
public
void
md5test()
輸出的結果:
e10adc3949ba59abbe56e057f20f883e
88316675d7882e3fdbe066000273842c
a7cf41c6537065fe724cc9980f8b5635
使用md5存在乙個問題,相同的password生成的hash值是相同的,如果兩個使用者設定了相同的密碼,那麼資料庫中會儲存兩個相同的值,這是極不安全的,加salt可以在一定程度上解決這一問題,所謂的加salt方法,就是加點『佐料』。其基本想法是這樣的,當使用者首次提供密碼時(通常是註冊時)由系統自動往這個密碼裡撒一些『佐料』,然後在雜湊,而當使用者登入時,系統為使用者提供的**上撒上相同的『佐料』,然後雜湊,再比較雜湊值,來確定密碼是否正確。
加鹽的原理:
給原文加入隨機數生成新的md5的值
@override
protected authenticationinfo dogetauthenticationinfo
(authenticationtoken token)
throws authenticationexception
//string pwd = "123456";
// 12345 根據 鹽值 aaa 加密獲取的密文
//88316675d7882e3fdbe066000273842c 1次迭代的密文
//a7cf41c6537065fe724cc9980f8b5635 2次迭代的密文
string pwd =
"88316675d7882e3fdbe066000273842c"
;// 驗證密碼
#定義憑證匹配器
credentialsmatcher=org.apache.shiro.authc.credential.hashedcredentialsmatcher
#雜湊演算法
credentialsmatcher.hashalgorithmname=md5
#雜湊次數
credentialsmatcher.ha****erations=1
#將憑證匹配器設定到realm
customrealm=com.dpb.realm.myrealm
customrealm.credentialsmatcher=$credentialsmatcher
securitymanager.realms=$customrealm
@test
public
void
test()
catch
(unknownaccountexception e)
catch
(incorrectcredential***ception e)
// 獲取登入的狀態
shiro使用者加密預設方式 shiro加密演算法
第一節的時候我介紹過,shiro有很多加密演算法,如md5和sha,而且還支援加鹽,使得密碼的解析變得更有難度,更好的保障了資料的安全性。這裡我們要介紹的是md5演算法,因為比較常用。首先我們來看看md5演算法的各種實現方式 packagecom.wujianwu.test importorg.ap...
Shiro 4 Shiro密碼加密
userrealm class cn.qecode.realm.userrealm name credentialsmatcher class org.apache.shiro.authc.credential.hashedcredentialsmatcher name hashalgorithmn...
Shiro學習筆記之Shiro加密
雜湊演算法一般用於生成資料的摘要資訊,是一種不可逆的演算法,一般適合儲存密碼之類的資料,常見的雜湊演算法如 md5 sha 等。一般進行雜湊時最好提供乙個 雜訊,這樣可以使破解密碼的難度變大。以下是md5加密演算法的乙個演示 public class tes 5 此介面提供加密密碼和驗證密碼的功能。...