本文主要是介绍Apache Shiro密码学特点-06,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Apache Shiro密码学特点
密码术是通过隐藏信息或将其转换为无意义来保护信息免受不良访问的做法,因此没有其他人可以阅读它。Shiro专注于密码学的两个核心要素:使用公钥或私钥加密数据的密码,以及对密码等数据进行不可逆转加密的哈希(也称为消息摘要)。
Shiro Cryptography的主要目标是采用传统上非常复杂的领域,并在提供强大的密码学功能的同时使其他人轻松实现。
简洁的特点
-
接口驱动,基于POJO - 所有Shiro的API都是基于接口的,并实现为POJO。这使您可以使用JavaBeans兼容格式(如JSON,YAML,Spring XML等)轻松配置Shiro Cryptography组件。您还可以根据需要覆盖或自定义Shiro,利用其API来节省您的时间和精力。
-
JCE上的简化包装 - 除非您是加密专家,否则Java加密扩展(JCE)可能很复杂且难以使用。Shiro的Cryptography API更容易理解和使用,并且它们大大简化了JCE概念。所以即使是Cryptography新手也可以在几分钟而不是几小时或几天内找到他们需要的东西。并且您不会牺牲任何功能,因为如果您需要它们仍然可以访问更复杂的JCE选项。
-
“Object Orientifies”加密概念 - JDK / JCE的Cipher和Message Digest(Hash)类是抽象类,非常令人困惑,要求您使用带有类型不安全字符串参数的obtuse工厂方法来获取要使用的实例。Shiro'Object Orientifies'的密码和哈希,基于干净的对象层次结构,允许您通过简单的实例化来使用它们。
-
运行时异常 - 与Shiro中的其他任何地方一样,所有加密异常都是RuntimeExceptions。您可以根据需要决定是否捕获异常。
密码功能
-
OO层次 -不同的是JCE,四郎密码申述追踪与他们的数学概念,一个面向对象的类层次结构:
AbstractSymmetricCipherService
,DefaultBlockCipherService
,AesCipherService
等,这使您可以轻松覆盖现有的类,并根据需要扩展功能。 -
只是实例化一个类 - 与使用String令牌参数的JCE令人困惑的工厂方法不同,使用Shiro Ciphers要容易得多 - 只需实例化一个类,根据需要使用JavaBeans属性对其进行配置,并根据需要使用它。例如,
new AesCipherService()
。 -
更安全的默认设置 - JCE Cipher实例采用“最小公分母”默认值,不会自动启用更安全的选项。Shiro将自动启用更安全的选项,以确保您的数据在默认情况下是安全的,帮助您防止意外的安全漏洞。
哈希功能
-
默认接口实现 - Shiro提供了开箱即用的默认Hash(JDK中的消息摘要)实现,例如MD5,SHA1,SHA-256等。这提供了一种类型安全的构造方法(例如
new Md5Hash(data)
),而不是强制在JDK中使用类型不安全的字符串工厂方法。 -
内置十六进制和Base64的转换 -四郎哈希实例可以经由他们的自动提供散列数据的十六进制和Base64编码
toHex()
和toBase64()
方法。所以现在你不需要弄清楚如何正确编码数据。 -
内置Salt和重复散列支持 - 在散列数据时,Salts和重复散列迭代是非常有价值的工具,特别是在保护用户密码时。Shiro的Hash实现支持盐和多个哈希迭代开箱即用,因此您无需在任何需要的地方重复此逻辑。
这篇关于Apache Shiro密码学特点-06的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!