Apache Shiro 加密特性--官网

Apache Shiro 加密

加密,是用来保护信息的手段,将数据转换为一些像乱码的东西使得没有人能看懂。Shiro侧重于密码学的两个核心元素:Cipher和Hash。这两者的区别在于是否可逆,Cipher加密通常是我们希望能将密文转回明文的,这通常需要密钥,而Hash则是对数据进行不可逆的加密

Shiro加密的主要目标是使得传统的极度复杂的加密变得简单可用,提供一个具有强健壮性的加密手段

Shiro加密特性简介

  • 接口驱动,基于POJO:Shiro的所有API都是基于接口的,且作为POJO实现,这允许使用JavaBeans兼容的配置方式来配置组件,包括这些加密组件
  • 包装了JCE,使用简单Java Cryptography ExtensionJDK提供的加密工具包,但是它是极其难用的,除非是密码学的专家,否则应该没人愿意使用。Shiro的加密API用起来会简单很多,它们简化了JCE的概念。即使是从来没用过加密的新手,也能很快的上手
  • 面向对象的实现JCE包中的类是抽象类,极其具有迷惑性。它需要你先使用一个类型不安全的工厂方法产生一个实例,然后才能通过这个实例进行加密。Shiro则是通过面向对象的概念形成了一个清晰的结构
  • 运行时异常:多有的加密异常都是以RuntimeException的形式抛出的,这不会强制要求你捕获这些异常进行处理

Cipher的特性

  • OO架构:和JCE不同,Shiro的Cipher是以面向对象的类层次结构来实现的,如:AbstractSymmetricCipherServiceDefaultBolckCipherServiceAesCipherSerevice等等,可以通过继承这些类来扩展需要的功能
  • 实例化类来使用JCE 是调用工厂方法来构造实例,该方法接收一个字符串参数来指定算法,从而使用这个实例来进行加密。而Shiro则可以直接实例化一个类来进行加密,如 new AesCipherService()
  • 安全的默认配置JCE Cipher实例采用”最低标准“,不会自动启用更安全的选项。Shiro会自动启用更安全的选项,以确保数据安全

Hash 的特性

  • 默认接口实现:Shiro提供了默认的Hash实现,如MD5,SHA1,SHA-256等,且这些实现提供了一个类型安全的构造方式(new Md5Hash(data))而不是像JCE那样需要使用类型不安全的字符串参数的工厂方法
  • 内置十六进制和Base64转换:Shiro的Hash实现,自动提供了一个十六进制和Base64的编码方法(toHex()toBase64()
  • 内置加盐和迭代哈希的支持:盐和迭代哈希在对数据进行散列是非常有用的工具,特别是在保护用户密码的时候。Shiro的Hash实现支持盐和多个散列迭代,因此不必在可能需要它的任何地方重复此逻辑
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容