模块  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)
        Deprecated.
        This method used to return the value of a proprietary property in the master file of the "SUN" Cryptographic Service Provider in order to determine how to parse algorithm-specific parameters. Use the new provider-based and algorithm-independent AlgorithmParameters and KeyFactory engine classes (introduced in the J2SE version 1.2 platform) instead.
        获取算法的指定属性。 算法名称应为标准名称。 有关标准算法名称的信息,请参见Java Security Standard Algorithm Names Specification 一种可能的用途是通过专门的算法解析器,它可以将类映射到他们理解的算法(很像Key解析器那样)。
        参数
        algName - 算法名称。
        propName - 要获取的属性的名称。
        结果
        指定属性的值。
      • insertProviderAt

        public static int insertProviderAt​(Provider provider,
                                           int position)
        在指定位置添加新提供程序。 位置是搜索提供程序所请求的算法的首选顺序。 该位置是从1开始的,即1是最优选的,后跟2,依此类推。

        如果给定的提供者安装在请求的位置,则过去位于该位置的提供者以及位置大于position所有提供者将向上移动一个位置(朝向已安装的提供者列表的末尾)。

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

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

        参数
        provider - 要添加的提供程序。
        position - 调用者对此提供程序的首选位置。
        结果
        添加提供程序的实际首选项位置,如果由于已安装提供程序而未添加提供程序,则返回-1。
        异常
        NullPointerException - 如果provider为null
        SecurityException - 如果存在安全管理器且其 SecurityManager.checkSecurityAccess(java.lang.String)方法拒绝添加新提供程序的访问权限
        另请参见:
        getProvider(java.lang.String)removeProvider(java.lang.String)SecurityPermission
      • removeProvider

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

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

        如果未安装提供程序或name为null,则此方法将以静默方式返回。

        首先,如果有安全管理器,则使用字符串"removeProvider."+name调用其checkSecurityAccess方法,以查看是否可以删除提供程序。 如果使用默认实现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 - 如果filter为null
        从以下版本开始:
        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 - 如果filter为null
        从以下版本开始:
        1.3
        另请参见:
        getProviders(java.lang.String)
      • getAlgorithms

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