java.security与javax.security

java.security与javax.security,java,security,jce,securitymanager,Java,Security,Jce,Securitymanager,我对Java(6+)如何分发其安全框架有点困惑。一方面,您有以下包(及其各自的子包和类型): java.security.* javax.security.* 另一方面,您有java.lang.SecurityManager,可能还有其他非安全包中散布的其他安全相关类型(如java.lang) 因此,有几个问题: java.security和javax.security之间有什么区别?什么时候在每个应用程序中使用类型 除了java.lang,还有其他以安全为中心的类型出现的包吗?如果有,它们

我对Java(6+)如何分发其安全框架有点困惑。一方面,您有以下包(及其各自的子包和类型):

  • java.security.*
  • javax.security.*
另一方面,您有
java.lang.SecurityManager
,可能还有其他非安全包中散布的其他安全相关类型(如
java.lang

因此,有几个问题:

  • java.security
    javax.security
    之间有什么区别?什么时候在每个应用程序中使用类型
  • 除了
    java.lang
    ,还有其他以安全为中心的类型出现的包吗?如果有,它们是什么
  • JCE和JCA在这里哪里合适?它们是由什么包组成的,还是完全分开并放在自己的罐子里

  • 分裂主要有历史原因。曾几何时,美国对加密软件有出口限制

    根据经验:与签名相关的内容可以在java.security中找到,其余(密码,…)可以在javax.security中找到


    如今,JRE附带了标准的安全提供商,因此JCE是平台的一部分。

    我不是这些软件包的使用专家,但问题看起来太广泛了。你在发布问题之前搜索过这个吗?是的,但是我的第一个问题似乎没有很好的解释。至于我的第二个问题,这就像大海捞针:当我甚至不知道我在寻找什么时,我如何梳理整个JRE以安全为中心的类型。在访问之后,他们提供的只是下载一些辖区策略文件,而不是一个包含实际类型的JAR。这让我相信JCE是JRE的一部分,但是没有看到像“java.security.JCE”这样的包。如果您的问题纯粹是关于JCE的,那么答案是“是”,它包含在JRE中。谢谢@jtahlborn(+1)-但是关于JRE的呢。还想知道上面的#1和#2。再次感谢!是的,JCA也包括在内。谢谢@Henry(+1)-以下几点:(1)JCE和JCA是同一个,还是不同(如果是,如何)?(2) JCE本身是API(如JDBC或JPA),还是安全API的参考实现?如果是后者,它的参考实现是什么?(3)除了java.security.*、javax.security.*和作为“安全框架”一部分的SecurityManager之外,JRE中还有其他内容吗?再次感谢@TicketMonster-您是否正在尝试确定一些特定的东西?这里不是专家,但我认为JCA主要是一个规范,JCE是它的一个实现。它是一个插件架构,因此其他安全提供者也可以在框架的保护下使用。SecurityManager有一个不同的用途,它与加密无关,而是与Java的沙盒模型有关,该模型允许对不受信任的代码限制某些操作(如文件访问)。啊,再次感谢@Henry(+1)。因此,请确认:JCA是API,JCE是该API的引用impl,就像还提供了它的impl一样。所以JCE和bouncy castle是“竞争性的JCA实现”,如果你愿意的话。这是一个公平的评估吗?再次感谢!