- java.lang.Object
-
- java.security.Security
-
public final class Security extends Object
此类集中了所有安全属性和常见安全方法。 其主要用途之一是管理提供商。
从特定于实现的位置读取安全属性的默认值,该位置通常是Java安装目录中的属性文件
conf/security/java.security
。- 从以下版本开始:
- 1.1
-
-
方法摘要
所有方法 静态方法 具体的方法 弃用的方法 变量和类型 方法 描述 static int
addProvider(Provider provider)
将提供者添加到下一个可用位置。static String
getAlgorithmProperty(String algName, String propName)
已过时。此方法用于返回“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()
返回包含所有已安装提供程序的数组。static Provider[]
getProviders(String filter)
返回包含满足指定选择条件的所有已安装提供程序的数组,如果尚未安装此类提供程序,则返回null。static Provider[]
getProviders(Map<String,String> filter)
返回包含满足指定选择条件的所有已安装提供程序的数组,如果尚未安装此类提供程序,则返回null。static int
insertProviderAt(Provider provider, int position)
在指定位置添加新提供程序。static void
removeProvider(String name)
删除具有指定名称的提供程序。static void
setProperty(String key, String datum)
设置安全属性值。
-
-
-
方法详细信息
-
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-independentAlgorithmParameters
andKeyFactory
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
-
addProvider
public static int addProvider(Provider provider)
将提供者添加到下一个可用位置。如果有安全管理器,则使用
"insertProvider"
权限目标名称调用SecurityManager.checkSecurityAccess(java.lang.String)
方法,以查看是否可以添加新提供程序。 如果拒绝此权限检查,checkSecurityAccess
再次使用"insertProvider."+provider.getName()
权限目标名称调用"insertProvider."+provider.getName()
。 如果两个检查都被拒绝,则抛出SecurityException
。- 参数
-
provider
- 要添加的提供程序。 - 结果
- 添加提供程序的首选位置,如果由于已安装提供程序而未添加提供程序,则返回-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()
返回包含所有已安装提供程序的数组。 数组中提供程序的顺序是它们的首选顺序。- 结果
- 所有已安装提供程序的数组。
-
getProvider
public static Provider getProvider(String name)
返回使用指定名称安装的提供程序(如果有)。 如果未安装具有指定名称的提供程序或name为null,则返回null。- 参数
-
name
- 要获取的提供程序的名称。 - 结果
- 指定名称的提供者。
- 另请参见:
-
removeProvider(java.lang.String)
,addProvider(java.security.Provider)
-
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)
- <crypto_service> <algorithm_or_type>
-
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)
- <crypto_service> <algorithm_or_type>
-
getProperty
public static String getProperty(String key)
获取安全属性值。首先,如果有安全管理器,则调用其
checkPermission
方法并获得java.security.SecurityPermission("getProperty."+key)
权限,以查看是否可以检索指定的安全属性值。- 参数
-
key
- 要检索的属性的密钥。 - 结果
- 与key对应的security属性的值。
- 异常
-
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)
设置安全属性值。首先,如果有安全管理器,则调用其
checkPermission
方法并获得java.security.SecurityPermission("setProperty."+key)
权限,以查看是否可以设置指定的安全属性值。- 参数
-
key
- 要设置的属性的名称。 -
datum
- 要设置的属性的值。 - 异常
-
SecurityException
- 如果存在安全管理器且其SecurityManager.checkPermission(java.security.Permission)
方法拒绝访问以设置指定的安全属性值 -
NullPointerException
- 如果key或datum为null - 另请参见:
-
getProperty(java.lang.String)
,SecurityPermission
-
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
-
-