- java.lang.Object
-
- java.security.Security
-
public final class Security extends Object
此类集中所有安全属性和常见的安全方法。 其主要用途之一是管理提供商。
安全属性的默认值从实现特定的位置读取,该位置通常是Java安装目录中的属性文件
conf/security/java.security
。- 从以下版本开始:
- 1.1
-
-
方法摘要
所有方法 静态方法 具体的方法 弃用的方法 Modifier and Type 方法 描述 static int
addProvider(Provider provider)
将供应商添加到下一个可用位置。static String
getAlgorithmProperty(String algName, String propName)
已过时。此方法用于返回“SUN”加密服务提供程序的主文件中的专有属性的值,以确定如何解析特定于算法的参数。AlgorithmParameters
使用新的基于提供者的和算法无关的AlgorithmParameters
和KeyFactory
引擎类(在J2SE版本1.2平台中引入)。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)
已过时。 此方法用于返回“SUN”加密服务提供程序的主文件中的专有属性的值,以确定如何解析特定于算法的参数。AlgorithmParameters
使用新的基于提供者和算法的AlgorithmParameters
和KeyFactory
引擎类(在J2SE版本1.2平台中引入)。获取算法的指定属性。 算法名称应为标准名称。 有关标准算法名称的信息,请参阅Java Security Standard Algorithm Names Specification 。 一种可能的用途是通过专门的算法解析器,它可以将类映射到他们所理解的算法(非常像键解析器)。- 参数
-
algName
- 算法名称。 -
propName
- 要获取的属性的名称。 - 结果
- 指定属性的值。
-
insertProviderAt
public static int insertProviderAt(Provider provider, int position)
在指定的位置添加一个新的提供者。 位置是提供者搜索请求的算法的首选顺序。 位置是1,即1是最优选的,其次是2,依此类推。如果给定的提供商安装在请求的位置,那么以前位于该位置的提供商以及位置大于
position
所有提供者position
向上移动一个位置(朝向已安装提供程序列表的末尾)。如果已经安装了提供程序,则无法添加。
如果有安全管理器,则使用
"insertProvider"
权限目标名称调用SecurityManager.checkSecurityAccess(java.lang.String)
方法,以查看是否可以添加新的提供程序。 如果此权限检查被拒绝,则checkSecurityAccess
被再次调用,具有"insertProvider."+provider.getName()
权限目标名称。 如果两个检查都被拒绝,则抛出一个SecurityException
。- 参数
-
provider
- 要添加的提供者。 -
position
- 呼叫者对此提供商的偏好位置。 - 结果
- 添加提供者的实际偏好位置,如果未安装提供程序,则为-1。
- 异常
-
NullPointerException
- 如果提供程序为空 -
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
- 如果提供者为null -
SecurityException
- 如果存在安全管理员,并且其SecurityManager.checkSecurityAccess(java.lang.String)
方法拒绝访问以添加新提供程序 - 另请参见:
-
getProvider(java.lang.String)
,removeProvider(java.lang.String)
,SecurityPermission
-
removeProvider
public static void removeProvider(String name)
删除具有指定名称的提供程序。当指定的提供程序被删除时,位于大于指定提供程序的位置的所有提供程序都向下移动一个位置(朝向已安装提供程序列表的头部)。
如果提供程序未安装或名称为空,此方法将静默返回。
首先,如果有一个安全管理器,它的
checkSecurityAccess
方法被调用与字符串"removeProvider."+name
看看是否可以删除提供程序。 如果使用默认实现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
- 如果过滤器为空 - 从以下版本开始:
- 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
- 如果过滤器为空 - 从以下版本开始:
- 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
- 正在检索的财产的关键。 - 结果
- 对应密钥的安全属性的值。
- 异常
-
SecurityException
- 如果安全管理器存在,并且其SecurityManager.checkPermission(java.security.Permission)
方法拒绝访问以检索指定的安全属性值 -
NullPointerException
- 是key为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
- 如果键或原点为空 - 另请参见:
-
getProperty(java.lang.String)
,SecurityPermission
-
getAlgorithms
public static Set<String> getAlgorithms(String serviceName)
返回一组字符串,其中包含指定Java加密服务的所有可用算法或类型的名称(例如Signature,MessageDigest,Cipher,Mac,KeyStore)。 如果没有支持指定服务的提供程序,或者serviceName为空,则返回一个空的Set。 有关Java加密服务的完整列表,请参阅Java Cryptography Architecture (JCA) Reference Guide 。 注意:返回的集是不可变的。- 参数
-
serviceName
- Java加密服务的名称(例如,Signature,MessageDigest,Cipher,Mac,KeyStore)。 注意:此参数不区分大小写。 - 结果
- 一组字符串,其中包含指定Java加密服务的所有可用算法或类型的名称,如果没有提供程序支持指定的服务,则包含空集。
- 从以下版本开始:
- 1.4
-
-