java沙箱的实现,依赖于很多的技术,比如数字签名、加密解密、密钥库等等技术,这些技术不仅仅用于沙箱,也可以应用于网络信息的传输,信息的存储等等很多方面。因此我们有必要提出一整套技术标准——安全的技术标准,针对这些标准,java用“安全提供者”来描述和实现,形成了安全提供者体系结构。
安全提供者2个概念:引擎和算法
一、引擎
就是接口,或则说操作。如果加密操作,签名操作,计算消息摘要 等等
二、算法
算法就是接口的具体实现。如消息摘要的实现分为md5 和sha 2种,他们都代表了不同的算法实现,但都是干一件事情,就是计算消息摘要,计算一段信息对应的简短而唯一的表示。
三、提供者体系结构
引擎一般放在java核心API中,是些接口或抽象类,并不实现具体的算法,
算法则可以由任何公司或个人实现,这些实现可以通过“提供者”收纳,并提供给java平台,供平台上所有的程序使用。
可以看出,体系结构就是一个配置策略的实现结构。也就是说,我们通过提供者,就能使用各种引擎,而不需要知道引擎的具体实现,做到实现对开发透明。
比如 A公司 实现了SHA消息摘要算法、对称加密解密算法,这些算法都实现了java标准引擎,我们就能把这些算法库路径及签名配置进“提供者”中,java用户程序只需要引用引擎和提供者就能用到A公司的算法了,而不需要知道具体的算法,甚至可以不知道A公司。
sun 对安全引擎有一套他自己的实现,是放在核心扩展包中的。(之后我们会逐步解读引擎和算法)。