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