public final class Security
extends Object
java.lang.Object | |
↳ | java.security.Security |
该类集中了所有安全属性和常见的安全方法。 其主要用途之一是管理提供商。
Public methods |
|
---|---|
static int |
addProvider(Provider provider) 向下一个可用位置添加提供者。 |
static String |
getAlgorithmProperty(String algName, String propName) 此方法在API级别1中已弃用。此方法用于返回“SUN”加密服务提供程序的主文件中专有属性的值,以确定如何解析算法特定的参数。 |
static Set<String> |
getAlgorithms(String serviceName) 返回一组包含指定Java加密服务(例如,Signature,MessageDigest,Cipher,Mac,KeyStore)的所有可用算法或类型的名称的字符串。 |
static String |
getProperty(String key) 获取安全属性值。 |
static Provider |
getProvider(String name) 返回使用指定名称安装的提供程序(如果有)。 |
static Provider[] |
getProviders(Map<String, String> filter) 返回一个数组,其中包含满足指定*选择标准的所有已安装提供程序;如果未安装此类提供程序,则返回null。 |
static Provider[] |
getProviders() 返回包含所有已安装提供程序的数组。 |
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) 设置安全属性值。 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
int addProvider (Provider provider)
向下一个可用位置添加提供者。
首先,如果存在安全管理器,则使用字符串"insertProvider."+provider.getName()
调用其checkSecurityAccess
方法以查看是否可以添加新的提供程序。 如果使用默认实现checkSecurityAccess
(即该方法未被覆盖),那么这将导致对SecurityPermission("insertProvider."+provider.getName())
权限的安全管理器的checkPermission
方法的SecurityPermission("insertProvider."+provider.getName())
。
Parameters | |
---|---|
provider |
Provider : the provider to be added. |
Returns | |
---|---|
int |
the preference position in which the provider was added, or -1 if the provider was not added because it is already installed. |
Throws | |
---|---|
NullPointerException |
if provider is null |
SecurityException |
if a security manager exists and its method denies access to add a new provider |
String getAlgorithmProperty (String algName, String propName)
此方法在API级别1中已弃用。
此方法用于返回“SUN”加密服务提供程序主文件中专有属性的值,以确定如何解析算法特定的参数。 AlgorithmParameters
,请使用新的基于提供程序和算法独立的引擎类(在J2SE 1.2版平台中引入) AlgorithmParameters
和KeyFactory
。
获取算法的指定属性。 算法名称应该是标准名称。 有关标准算法名称的信息,请参阅Java Cryptography Architecture Standard Algorithm Name Documentation 。 一种可能的用途是专用算法分析器,它可以将类映射到他们理解的算法(很像关键分析器所做的)。
Parameters | |
---|---|
algName |
String : the algorithm name. |
propName |
String : the name of the property to get. |
Returns | |
---|---|
String |
the value of the specified property. |
Set<String> getAlgorithms (String serviceName)
返回一组包含指定Java加密服务(例如,Signature,MessageDigest,Cipher,Mac,KeyStore)的所有可用算法或类型的名称的字符串。 如果没有支持指定服务的提供者或者serviceName为null,则返回一个空Set。 有关Java加密服务的完整列表,请参阅Java Cryptography Architecture API Specification & Reference 。 注意:返回的集合是不可变的。
Parameters | |
---|---|
serviceName |
String : the name of the Java cryptographic service (e.g., Signature, MessageDigest, Cipher, Mac, KeyStore). Note: this parameter is case-insensitive. |
Returns | |
---|---|
Set<String> |
a Set of Strings containing the names of all available algorithms or types for the specified Java cryptographic service or an empty set if no provider supports the specified service. |
String getProperty (String key)
获取安全属性值。
首先,如果存在安全管理器,则使用 java.security.SecurityPermission("getProperty."+key)
权限调用其 checkPermission
方法,以查看是否可以检索指定的安全属性值。
Parameters | |
---|---|
key |
String : the key of the property being retrieved. |
Returns | |
---|---|
String |
the value of the security property corresponding to key. |
Throws | |
---|---|
SecurityException |
if a security manager exists and its method denies access to retrieve the specified security property value |
NullPointerException |
is key is null |
Provider getProvider (String name)
返回使用指定名称安装的提供程序(如果有)。 如果没有安装指定名称的提供程序或名称为空,则返回null。
Parameters | |
---|---|
name |
String : the name of the provider to get. |
Returns | |
---|---|
Provider |
the provider of the specified name. |
Provider[] getProviders (Map<String, String> filter)
返回一个数组,其中包含满足指定*选择标准的所有已安装提供程序;如果未安装此类提供程序,则返回null。 返回的提供者按照他们的preference order进行排序 。
选择标准由地图表示。 每个映射条目代表一个选择标准。 如果满足所有选择标准,则选择提供者。 此类地图中任何条目的关键字必须采用以下两种格式之一:
加密服务名称不得包含任何点。
与键关联的值必须是空字符串。
如果提供者为指定的加密服务实现指定的算法或类型,则提供者满足此选择标准。
加密服务名称不得包含任何点。 <algorithm_or_type>和<attribute_name>之间必须有一个或多个空格字符。
与键关联的值必须是非空字符串。 如果提供者为指定的加密服务实现指定的算法或类型,并且其实现符合由指定的属性名称/值对表示的约束,则提供者满足此选择标准。
有关标准加密服务名称,标准算法名称和标准属性名称的信息,请参阅 Java Cryptography Architecture Standard Algorithm Name Documentation 。
Parameters | |
---|---|
filter |
Map : the criteria for selecting providers. The filter is case-insensitive. |
Returns | |
---|---|
Provider[] |
all the installed providers that satisfy the selection criteria, or null if no such providers have been installed. |
Throws | |
---|---|
InvalidParameterException |
if the filter is not in the required format |
NullPointerException |
if filter is null |
Provider[] getProviders ()
返回包含所有已安装提供程序的数组。 数组中提供者的顺序是他们的偏好顺序。
Returns | |
---|---|
Provider[] |
an array of all the installed providers. |
Provider[] getProviders (String filter)
返回包含满足指定选择条件的所有已安装提供程序的数组;如果未安装此类提供程序,则返回null。 返回的提供者按照他们的preference order进行排序 。
密码服务总是与特定的算法或类型相关联。 例如,数字签名服务总是与特定算法(例如,DSA)相关联,并且CertificateFactory服务总是与特定证书类型(例如X.509)相关联。
选择标准必须以下列两种格式之一来指定:
加密服务名称不得包含任何点。
如果提供者为指定的加密服务实现指定的算法或类型,则提供者满足指定的选择标准。
例如,任何为X.509证书提供CertificateFactory实现的提供者都将满足“CertificateFactory.X.509”。
加密服务名称不得包含任何点。 <algorithm_or_type>和<attribute_name>之间必须有一个或多个空格字符。
如果提供者为指定的加密服务实现指定的算法或类型,并且其实现符合由指定的属性名称/值对表示的约束,则提供者满足此选择标准。
例如,任何实施SHA1withDSA签名算法且密钥大小为1024(或更大)的供应商都将满足“Signature.SHA1withDSA密钥大小:1024”。
有关标准加密服务名称,标准算法名称和标准属性名称的信息,请参阅 Java Cryptography Architecture Standard Algorithm Name Documentation 。
Parameters | |
---|---|
filter |
String : the criterion for selecting providers. The filter is case-insensitive. |
Returns | |
---|---|
Provider[] |
all the installed providers that satisfy the selection criterion, or null if no such providers have been installed. |
Throws | |
---|---|
InvalidParameterException |
if the filter is not in the required format |
NullPointerException |
if filter is null |
也可以看看:
int insertProviderAt (Provider provider, int position)
在指定的位置添加一个新的提供者。 该位置是供应商搜索所请求算法的首选顺序。 该位置是基于1的,即1是最优选的,后面是2,依此类推。
如果给定供应商安装在请求位置,那么曾经位于该位置的供应商以及位置大于 position
所有供应商 position
向上移动一个位置(朝向已安装供应商列表的末尾)。
如果供应商已安装,则无法添加。
首先,如果存在安全管理器,则使用字符串"insertProvider."+provider.getName()
调用其checkSecurityAccess
方法,以查看是否可以添加新的提供程序。 如果使用默认实现checkSecurityAccess
(即,该方法未被覆盖),那么这将导致调用具有SecurityPermission("insertProvider."+provider.getName())
权限的安全管理器的checkPermission
方法。
Parameters | |
---|---|
provider |
Provider : the provider to be added. |
position |
int : the preference position that the caller would like for this provider. |
Returns | |
---|---|
int |
the actual preference position in which the provider was added, or -1 if the provider was not added because it is already installed. |
Throws | |
---|---|
NullPointerException |
if provider is null |
SecurityException |
if a security manager exists and its method denies access to add a new provider |
void removeProvider (String name)
删除具有指定名称的提供者。
当指定的提供者被移除时,位于比指定提供者所在位置更大的位置的所有提供者被向下移动一个位置(朝向已安装提供者列表的头部)。
如果提供程序未安装或者名称为空,此方法会自动返回。
首先,如果有安全管理器,则使用字符串"removeProvider."+name
调用其checkSecurityAccess
方法,以查看是否可以移除提供程序。 如果使用默认实现checkSecurityAccess
(即,该方法未被覆盖),那么这将导致调用具有SecurityPermission("removeProvider."+name)
权限的安全管理器的checkPermission
方法。
Parameters | |
---|---|
name |
String : the name of the provider to remove. |
Throws | |
---|---|
SecurityException |
if a security manager exists and its method denies access to remove the provider |
void setProperty (String key, String datum)
设置安全属性值。
首先,如果存在安全管理器, checkPermission
使用 java.security.SecurityPermission("setProperty."+key)
权限调用其 checkPermission
方法,查看是否可以设置指定的安全属性值。
Parameters | |
---|---|
key |
String : the name of the property to be set. |
datum |
String : the value of the property to be set. |
Throws | |
---|---|
SecurityException |
if a security manager exists and its method denies access to set the specified security property value |
NullPointerException |
if key or datum is null |