shiro加密
Shiro通過引入它的CipherService API試圖簡化加密密碼的整個概念。CipherService是多數開發者在保護數據時夢寐以求的東西:簡單、無狀態、線程安全的API,能夠在一次方法調用中對整個數據進行加密或解密。你所需要做的只是提供你的密鑰,就可根據需要加密或解密。如下列所示中,使用256位AES加密:
AesCipherService cipherService = new AesCipherService();
cipherService.setKeySize(256);
//創建一個測試密鑰:
byte[] testKey = cipherService.generateNewKey();
//加密文件的字節:
byte[] encrypted = cipherService.encrypt(fileBytes, testKey);
較之JDK的Cipher API,Shiro的示例要簡單的多:
l 你可以直接實例化一個CipherService - 沒有奇怪或讓人混亂的工廠方法;
l Cipher配置選項可以表示成JavaBean - 兼容的getter和setter方法 - 沒有了奇怪和難以理解的“轉換字符串”;
l 加密和解密在單個方法調用中完成;
l 沒有強加的Checked Exception。如果愿意,可以捕獲Shiro的CryptoException。
Shiro的CipherService API還有其他好處,如同時支持基于字節數組的加密/解密(稱為“塊”操作)和基于流的加密/解密(如加密音頻或視頻)。
不必再忍受Java Cryptography帶來的痛苦。Shiro的Cryptography支持就是為了減少你在確保數據安全上付出的努力。
Shiro中加密功能的特點:
面向對象的層次結構 — 與JCE不同,Shiro的密碼功能遵循面向對象的類層次結構:象 AbstractSymmetricCipherService,DefaultBlockCipherService,AesCipherService 等等,這使您可以很容易地替換掉現有的類或是擴展其功能。
只需實例化一個類 — 與JCE的混亂使用字符串標記參數的工廠方法不同,使用Shiro加密是非常容易的,只需實例化一個類。配置必要的JavaBean的屬性,并根據需要使用。例如,新的AesCipherService()。
更安全的默認設置 — JCE默認情況下并不會自動實現更安全的選擇。而Shiro會提供更安全的選擇,以確保您的數據是安全的。因為默認情況下,它會自動啟用以幫助您防止意外的安全漏洞。