Module  java.base
软件包  java.security

Class Security



  • public final class Security
    extends Object

    此类集中所有安全属性和常见的安全方法。 其主要用途之一是管理提供商。

    安全属性的默认值从实现特定的位置读取,该位置通常是Java安装目录中的属性文件conf/security/java.security

    从以下版本开始:
    1.1
    • 方法详细信息

      • getAlgorithmProperty

        @Deprecated
        public static String getAlgorithmProperty​(String algName,
                                                  String propName)
        已过时。 此方法用于返回“SUN”加密服务提供程序的主文件中的专有属性的值,以确定如何解析特定于算法的参数。 AlgorithmParameters使用新的基于提供者和算法的AlgorithmParametersKeyFactory引擎类(在J2SE版本1.2平台中引入)。
        获取算法的指定属性。 算法名称应为标准名称。 有关标准算法名称的信息,请参阅Java Security Standard Algorithm Names Specification 一种可能的用途是通过专门的算法解析器,它可以将类映射到他们所理解的算法(非常像键解析器)。
        参数
        algName - 算法名称。
        propName - 要获取的属性的名称。
        结果
        指定属性的值。
      • insertProviderAt

        public static int insertProviderAt​(Provider provider,
                                           int position)
        在指定的位置添加一个新的提供者。 位置是提供者搜索请求的算法的首选顺序。 位置是1,即1是最优选的,其次是2,依此类推。

        如果给定的提供商安装在请求的位置,那么以前位于该位置的提供商以及位置大于position所有提供者position向上移动一个位置(朝向已安装提供程序列表的末尾)。

        如果已经安装了提供程序,则无法添加。

        如果有安全管理器,则使用"insertProvider"权限目标名称调用SecurityManager.checkSecurityAccess(java.lang.String)方法,以查看是否可以添加新的提供程序。 如果此权限检查被拒绝,则checkSecurityAccess被再次调用,具有"insertProvider."+provider.getName()权限目标名称。 如果两个检查都被拒绝,则抛出一个SecurityException

        参数
        provider - 要添加的提供者。
        position - 呼叫者对此提供商的偏好位置。
        结果
        添加提供者的实际偏好位置,如果未安装提供程序,则为-1。
        异常
        NullPointerException - 如果提供程序为空
        SecurityException - 如果存在安全管理员,并且其 SecurityManager.checkSecurityAccess(java.lang.String)方法拒绝访问以添加新提供程序
        另请参见:
        getProvider(java.lang.String)removeProvider(java.lang.String)SecurityPermission
      • removeProvider

        public static void removeProvider​(String name)
        删除具有指定名称的提供程序。

        当指定的提供程序被删除时,位于大于指定提供程序的位置的所有提供程序都向下移动一个位置(朝向已安装提供程序列表的头部)。

        如果提供程序未安装或名称为空,此方法将静默返回。

        首先,如果有一个安全管理器,它的checkSecurityAccess方法被调用与字符串"removeProvider."+name看看是否可以删除提供程序。 如果使用默认实现checkSecurityAccess (即,该方法不被覆盖),那么这将导致使用SecurityPermission("removeProvider."+name)权限调用安全管理器的checkPermission方法。

        参数
        name - 要删除的提供商的名称。
        异常
        SecurityException - 如果存在安全管理员,并且其 SecurityManager.checkSecurityAccess(java.lang.String)方法拒绝访问以删除提供程序
        另请参见:
        getProvider(java.lang.String)addProvider(java.security.Provider)
      • getProviders

        public static Provider[] getProviders​()
        返回包含所有已安装提供程序的数组。 数组中提供者的顺序是它们的优先顺序。
        结果
        所有安装的提供程序的阵列。
      • getProviders

        public static Provider[] getProviders​(String filter)
        返回包含满足指定选择条件的所有已安装提供程序的数组,如果未安装此类提供程序,则返回null。 返回的提供商根据他们的preference order进行订购。

        密码服务始终与特定的算法或类型相关联。 例如,数字签名服务始终与特定算法(例如,DSA)相关联,并且CertificateFactory服务始终与特定证书类型相关联(例如,X.509)。

        选择标准必须用以下两种格式之一来指定:

        • <crypto_service> <algorithm_or_type>

          加密服务名称不能包含任何点。

          如果提供者实现指定的加密服务的指定算法或类型,则提供者满足指定的选择标准。

          例如,对于X.509证书提供CertificateFactory实现的任何提供者都将满足“CertificateFactory.X.509”。

        • <crypto_service>。<algorithm_or_type> <attribute_name>:<attribute_value>

          加密服务名称不能包含任何点。 <algorithm_or_type><attribute_name>之间必须有一个或多个空格。

          如果提供者实现指定的加密服务的指定算法或类型,并且其实现满足指定的属性名/值对表示的约束,则提供者满足该选择标准。

          例如,任何实施SHA1withDSA签名算法的提供者的密钥大小为1024(或更大)的“Signature.SHA1withDSA KeySize:1024”将被满足。

        有关标准加密服务名称,标准算法名称和标准属性名称的信息,请参阅Java Security Standard Algorithm Names Specification

        参数
        filter - 选择提供者的标准。 过滤器不区分大小写。
        结果
        所有安装的提供者满足选择标准,如果没有安装这样的提供者,则为null。
        异常
        InvalidParameterException - 如果过滤器不是所需的格式
        NullPointerException - 如果过滤器为空
        从以下版本开始:
        1.3
        另请参见:
        getProviders(java.util.Map)
      • getProviders

        public static Provider[] getProviders​(Map<String,String> filter)
        返回包含满足指定选择条件的所有已安装提供程序的数组,如果未安装此类提供程序,则返回null。 返回的提供商根据他们的preference order订购

        选择标准由地图表示。 每个地图条目表示选择标准。 如果满足所有选择标准,则选择提供者。 此类地图中任何条目的关键字必须为以下两种格式之一:

        • <crypto_service> <algorithm_or_type>

          加密服务名称不能包含任何点。

          与键相关联的值必须是空字符串。

          如果提供者实现指定的加密服务的指定算法或类型,则提供者满足该选择标准。

        • <crypto_service>。 <algorithm_or_type> <attribute_name>

          加密服务名称不能包含任何点。 <algorithm_or_type><attribute_name>之间必须有一个或多个空格。

          与键相关联的值必须是非空字符串。 如果提供者实现指定的加密服务的指定算法或类型,并且其实现满足指定的属性名/值对表示的约束,则提供者满足该选择标准。

        有关标准加密服务名称,标准算法名称和标准属性名称的信息,请参阅Java Security Standard Algorithm Names Specification

        参数
        filter - 选择提供者的标准。 过滤器不区分大小写。
        结果
        满足选择标准的所有已安装的提供程序,如果没有安装此类提供程序,则为null。
        异常
        InvalidParameterException - 如果过滤器不是所需的格式
        NullPointerException - 如果过滤器为空
        从以下版本开始:
        1.3
        另请参见:
        getProviders(java.lang.String)
      • getAlgorithms

        public static Set<String> getAlgorithms​(String serviceName)
        返回一组字符串,其中包含指定Java加密服务的所有可用算法或类型的名称(例如Signature,MessageDigest,Cipher,Mac,KeyStore)。 如果没有支持指定服务的提供程序,或者serviceName为空,则返回一个空的Set。 有关Java加密服务的完整列表,请参阅Java Cryptography Architecture (JCA) Reference Guide 注意:返回的集是不可变的。
        参数
        serviceName - Java加密服务的名称(例如,Signature,MessageDigest,Cipher,Mac,KeyStore)。 注意:此参数不区分大小写。
        结果
        一组字符串,其中包含指定Java加密服务的所有可用算法或类型的名称,如果没有提供程序支持指定的服务,则包含空集。
        从以下版本开始:
        1.4