shiro加密

jopen 11年前

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会提供更安全的选择,以确保您的数据是安全的。因为默认情况下,它会自动启用以帮助您防止意外的安全漏洞。