shiro加密

jopen 10年前發布 | 25K 次閱讀 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會提供更安全的選擇,以確保您的數據是安全的。因為默認情況下,它會自動啟用以幫助您防止意外的安全漏洞。

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!