java.security

接口
异常
java.lang.Object
  继承者 java.security.Security

public final class Security
     
extends Object

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


方法摘要
static int addProvider(Provider provider)
          将提供者添加到下一个可用位置。
static String getAlgorithmProperty(String algName, String propName)
          已过时。 此方法用来返回 "SUN" 密码服务提供者的主文件中的专有属性的值,以便确定如何解析特定于算法的参数。使用新的基于提供者的、与算法无关的 AlgorithmParametersKeyFactory 引擎类(在 J2SE 1.2 版中引入)代替。
static Set<String> getAlgorithms(String serviceName)
          返回字符串 Set,这些字符串包含了指定的 Java 加密服务的所有可用算法或类型的名称(例如,Signature、MessageDigest、Cipher、Mac、KeyStore)。
static String getProperty(String key)
          获取安全属性值。
static Provider getProvider(String name)
          返回使用指定的名称安装的提供者(如果有)。
static Provider[] getProviders()
          返回包含所有已安装的提供者的数组。
static Provider[] getProviders(Map<String,String> filter)
          返回包含可以满足指定的 * 选择标准的所有已安装的提供者的数组,如果尚未安装此类提供者,则返回 null。
static Provider[] getProviders(String filter)
          返回包含满足指定的选择标准的所有已安装的提供者的数组,如果尚未安装此类提供者,则返回 null。
static int insertProviderAt(Provider provider, int position)
          在指定的位置添加新的提供者。
static void removeProvider(String name)
          移除带有指定名称的提供者。
static void setProperty(String key, String datum)
          设置安全属性值。
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

方法详细信息

getAlgorithmProperty

@Deprecated
public static String getAlgorithmProperty(String algName,
                                                     String propName)
已过时。  此方法用来返回 "SUN" 密码服务提供者的主文件中的专有属性的值,以便确定如何解析特定于算法的参数。使用新的基于提供者的、与算法无关的 AlgorithmParametersKeyFactory 引擎类(在 J2SE 1.2 版中引入)代替。

获取某个算法的指定属性。算法名称必须是标准名称。有关标准算法名称的信息,请参见 Java Cryptography Architecture API Specification & Reference 中的附录 A。一种可能的用法是利用专门的算法分析程序,这些程序可以将类映射到它们理解的算法中(非常类似于 Key 分析程序的做法)。

参数:
algName - 算法名称。
propName - 要获得的属性名称。
返回:
指定的属性值。

insertProviderAt

public static int insertProviderAt(Provider provider,
                                   int position)
在指定的位置添加新的提供者。该位置就是在其中搜索提供者以寻找请求的算法的首选顺序。该位置从 1 开始,也就是说 1 是首选数,其后是 2,等等。

如果将给定的提供者安装到了请求的位置,则在该位置使用的提供者和所有位置大于 position 的提供者将向上移动一个位置(向所安装的提供者列表的尾部移动)。

如果已经安装了某个提供者,则不能再添加该程序。

首先,如果有安全管理器,则调用带有字符串 "insertProvider."+provider.getName()checkSecurityAccess 方法可查看是否可以添加新的提供者。如果使用 checkSecurityAccess 的默认实现(即未重写此方法),则会导致调用带有 SecurityPermission("insertProvider."+provider.getName()) 权限的安全管理器的 checkPermission 方法。

参数:
provider - 要添加的提供者。
position - 调用方调用此提供者的首选位置。
返回:
添加提供者的实际首选位置,如果因已安装了提供者而未添加它,则返回 -1。
抛出:
NullPointerException - 如果提供者为 null
SecurityException - 如果安全管理器已存在,且其 SecurityManager.checkSecurityAccess(java.lang.String) 方法拒绝对新的提供者进行添加访问
另请参见:
getProvider(java.lang.String), removeProvider(java.lang.String), SecurityPermission

addProvider

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

首先,如果有安全管理器,则调用带有字符串 "insertProvider."+provider.getName()checkSecurityAccess 方法可查看是否可以添加新的提供者。如果使用 checkSecurityAccess 的默认实现(即未重写此方法),则会导致调用带有 SecurityPermission("insertProvider."+provider.getName()) 权限的安全管理器的 checkPermission 方法。

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

removeProvider

public static void removeProvider(String name)
移除带有指定名称的提供者。

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

此方法默认返回是否未安装提供者或者名称是否为 null。

首先,如果有安全管理器,则调用带有字符串 "removeProvider."+namecheckSecurityAccess 方法可查看是否可以移除该提供者。如果使用 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()
返回包含所有已安装的提供者的数组。数组中提供者的顺序是其首选顺序。

返回:
所有已安装的提供者的数组。

getProvider

public static Provider getProvider(String name)
返回使用指定的名称安装的提供者(如果有)。如果未安装带有指定名称的提供者,或者名称为 null,则将返回 null。

参数:
name - 要获取的提供者的名称。
返回:
指定名称的提供者。
另请参见:
removeProvider(java.lang.String), addProvider(java.security.Provider)

getProviders

public static Provider[] getProviders(String filter)
返回包含满足指定的选择标准的所有已安装的提供者的数组,如果尚未安装此类提供者,则返回 null。返回的提供者将根据其 首选顺序进行排序。

加密服务始终与特定的算法或类型相关。例如,数字签名服务始终与特定算法(如 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 签名算法、keysize 为 1024(或更大)的提供者都可以满足 "Signature.SHA1withDSA KeySize:1024" 的需要。

有关标准加密服务名称、标准算法名称和标准属性名称的信息,请参阅 Java Cryptography Architecture API Specification & Reference 中的附录 A。

参数:
filter - 选择提供者的标准。过滤器是区分大小写的。
返回:
可满足选择标准的所有已安装的提供者,如果尚未安装此类提供者,则返回 null。
抛出:
InvalidParameterException - 如果过滤器不是需要的格式
NullPointerException - 如果过滤器为 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 Cryptography Architecture API Specification & Reference 中的附录 A。

参数:
filter - 选择提供者的标准。过滤器是区分大小写的。
返回:
所有可满足选择标准的已安装的提供者,如果尚未安装此类提供者,则返回 null。
抛出:
InvalidParameterException - 如果过滤器不是需要的格式
NullPointerException - 如果过滤器为 null
从以下版本开始:
1.3
另请参见:
getProviders(java.lang.String)

getProperty

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

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

参数:
key - 要获取的属性的密钥。
返回:
与密钥对应的安全属性的值。
抛出:
SecurityException - 如果有安全管理器,并且其 SecurityManager.checkPermission(java.security.Permission) 方法拒绝对指定的安全属性值进行获取访问
NullPointerException - 如果密钥为 null
另请参见:
setProperty(java.lang.String, java.lang.String), SecurityPermission

setProperty

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

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

参数:
key - 要设置的属性的名称。
datum - 要设置的属性的值。
抛出:
SecurityException - 如果有安全管理器并且其 SecurityManager.checkPermission(java.security.Permission) 方法拒绝对指定的安全属性值进行设置访问
NullPointerException - 如果密钥或数据为 null
另请参见:
getProperty(java.lang.String), SecurityPermission

getAlgorithms

public static Set<String> getAlgorithms(String serviceName)
返回字符串 Set,这些字符串包含了指定的 Java 加密服务的所有可用算法或类型的名称(例如,Signature、MessageDigest、Cipher、Mac、KeyStore)。如果没有支持指定服务的提供者,或者 serviceName 为 null,则返回一个空 Set。有关 Java 加密服务的完整列表,请参阅 Java Cryptography Architecture API Specification & Reference。注:返回的 set 是不可改变的。

参数:
serviceName - Java 加密服务的名称(例如,Signature、MessageDigest、Cipher、Mac、KeyStore)。注:此参数是区分大小写的。
返回:
字符串的 Set,这些字符串包含用于指定的 Java 加密服务的所有可用算法或类型,如果没有支持指定服务的提供者,则返回一个空 set。
从以下版本开始:
1.4