模块 java.base

类 Security

java.lang.Object
java.security.Security

public final class Security extends Object

此类集中了所有安全属性和通用安全方法。它的主要用途之一是管理供应商。

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

实现注意事项:
如果属性文件加载失败,JDK 实现将在初始化 Security 类时抛出未指定的错误。
自从:
1.1
  • 方法详情

    • getAlgorithmProperty

      @Deprecated public static String  getAlgorithmProperty(String  algName, String  propName)
      已弃用。
      此方法用于返回“SUN”加密服务提供程序主文件中专有属性的值,以确定如何解析特定于算法的参数。请改用新的基于提供者且独立于算法的 AlgorithmParametersKeyFactory 引擎类(在 J2SE 1.2 版平台中引入)。
      获取算法的指定属性。算法名称应该是标准名称。有关标准算法名称的信息,请参阅 Java 安全标准算法名称规范。一种可能的用途是通过专门的算法解析器,它可以将类映射到它们理解的算法(很像密钥解析器所做的)。
      参数:
      algName - 算法名称。
      propName - 要获取的属性的名称。
      返回:
      指定属性的值。
    • insertProviderAt

      public static int insertProviderAt(Provider  provider, int position)
      在指定位置添加一个新的提供者。该位置是搜索提供程序以查找请求的算法的优先顺序。位置是从 1 开始的,即 1 是最优先的,其次是 2,依此类推。

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

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

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

      参数:
      provider - 要添加的提供程序。
      position - 调用者希望此提供者的偏好位置。
      返回:
      添加提供程序的实际首选项位置,如果提供程序因为已经安装而未添加,则为 -1。
      抛出:
      NullPointerException - 如果提供者是 null
      SecurityException - 如果安全管理器存在且其 SecurityManager.checkSecurityAccess(java.lang.String) 方法拒绝访问以添加新提供者
      参见:
    • addProvider

      public static int addProvider(Provider  provider)
      将提供者添加到下一个可用位置。

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

      参数:
      provider - 要添加的提供程序。
      返回:
      添加提供程序的首选项位置,如果提供程序因为已安装而未添加,则为 -1。
      抛出:
      NullPointerException - 如果提供者是 null
      SecurityException - 如果安全管理器存在且其 SecurityManager.checkSecurityAccess(java.lang.String) 方法拒绝访问以添加新提供者
      参见:
    • removeProvider

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

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

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

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

      参数:
      name - 要删除的提供程序的名称。
      抛出:
      SecurityException - 如果存在安全管理器并且其 SecurityManager.checkSecurityAccess(java.lang.String) 方法拒绝访问以删除提供程序
      参见:
    • getProviders

      public static Provider [] getProviders()
      返回包含所有已安装提供程序的数组。数组中提供者的顺序是他们的优先顺序。
      返回:
      所有已安装提供程序的数组。
    • getProvider

      public static Provider  getProvider(String  name)
      返回以指定名称安装的提供程序(如果有)。如果没有安装具有指定名称的提供程序或名称为 null ,则返回 null
      参数:
      name - 要获取的提供者的名称。
      返回:
      指定名称的提供者。
      参见:
    • getProviders

      public static Provider [] getProviders(String  filter)
      返回一个数组,其中包含满足指定选择标准的所有已安装提供程序,如果没有安装此类提供程序,则返回 null。返回的提供者根据他们的 偏好顺序 排序。

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

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

      • <加密服务>.<算法或类型>

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

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

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

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

        加密服务名称不得包含任何点。之间必须有一个或多个空格字符<算法或类型><属性名称>.

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

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

      有关标准加密服务名称、标准算法名称和标准属性名称的信息,请参阅 Java 安全标准算法名称规范

      参数:
      filter - 选择供应商的标准。过滤器不区分大小写。
      返回:
      所有满足选择标准的已安装提供程序,如果没有安装此类提供程序,则为null
      抛出:
      InvalidParameterException - 如果过滤器不是所需的格式
      NullPointerException - 如果过滤器是 null
      自从:
      1.3
      参见:
    • getProviders

      public static Provider [] getProviders(Map <String ,String > filter)
      返回一个数组,其中包含满足指定选择条件的所有已安装提供程序,如果没有安装此类提供程序,则返回 null。返回的提供者根据他们的 偏好顺序 排序。

      选择标准由map表示。每个映射条目代表一个选择标准。如果提供者满足所有选择标准,则选择提供者。此类map中任何条目的键必须采用以下两种格式之一:

      • <加密服务>.<算法或类型>

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

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

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

      • <加密服务>。 <算法或类型> <属性名称>

        加密服务名称不得包含任何点。之间必须有一个或多个空格字符<算法或类型><属性名称>.

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

      有关标准加密服务名称、标准算法名称和标准属性名称的信息,请参阅 Java 安全标准算法名称规范

      参数:
      filter - 选择供应商的标准。过滤器不区分大小写。
      返回:
      所有满足选择标准的已安装提供程序,如果没有安装此类提供程序,则为null
      抛出:
      InvalidParameterException - 如果过滤器不是所需的格式
      NullPointerException - 如果过滤器是 null
      自从:
      1.3
      参见:
    • getProperty

      public static String  getProperty(String  key)
      获取安全属性值。

      首先,如果有安全管理器,它的 checkPermission 方法将以 java.security.SecurityPermission("getProperty."+key) 权限调用,以查看是否可以检索指定的安全属性值。

      参数:
      key - 正在检索的属性的键。
      返回:
      密钥对应的安全属性的值。
      抛出:
      SecurityException - 如果安全管理器存在且其 SecurityManager.checkPermission(java.security.Permission) 方法拒绝访问以检索指定的安全属性值
      NullPointerException - 关键是 null
      参见:
    • setProperty

      public static void setProperty(String  key, String  datum)
      设置安全属性值。

      首先,如果有安全管理器,它的 checkPermission 方法将以 java.security.SecurityPermission("setProperty."+key) 权限调用,以查看是否可以设置指定的安全属性值。

      参数:
      key - 要设置的属性的名称。
      datum - 要设置的属性值。
      抛出:
      SecurityException - 如果安全管理器存在且其 SecurityManager.checkPermission(java.security.Permission) 方法拒绝访问以设置指定的安全属性值
      NullPointerException - 如果键或数据是 null
      参见:
    • getAlgorithms

      public static Set <String > getAlgorithms(String  serviceName)
      返回一组 String 对象,其中包含指定 Java 加密服务的所有可用算法或类型的名称(例如,SignatureMessageDigestCipherMacKeyStore)。如果没有提供者支持指定的服务或者如果 serviceNamenull 则返回一个空集。有关 Java 加密服务的完整列表,请参阅 Java 加密体系结构 (JCA) 参考指南。注意:返回的集合是不可变的。
      参数:
      serviceName - Java 加密服务的名称(例如,SignatureMessageDigestCipherMacKeyStore)。注意:此参数不区分大小写。
      返回:
      一组 String 对象,包含指定 Java 加密服务的所有可用算法或类型的名称,如果没有提供者支持指定服务,则为空集。
      自从:
      1.4