public final class Security extends Object
此类集中所有安全属性和常见的安全方法。 其主要用途之一是管理提供商。
安全属性的默认值是从具体实现的位置,这是典型的属性文件中读取lib/security/java.security
在Java安装目录。
Modifier and Type | Method and Description |
---|---|
static int |
addProvider(Provider provider)
将供应商添加到下一个可用位置。
|
static String |
getAlgorithmProperty(String algName, String propName)
已弃用
此方法用于返回“SUN”加密服务提供程序的主文件中的专有属性的值,以确定如何解析特定于算法的参数。
使用新的基于提供和算法无关
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(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)
设置安全属性值。
|
@Deprecated public static String getAlgorithmProperty(String algName, String propName)
AlgorithmParameters
和KeyFactory
引擎类(在J2SE 1.2版中引入)代替。
algName
- 算法名称。
propName
- 要获取的财产的名称。
public static int insertProviderAt(Provider provider, int position)
如果给定的提供商安装在请求的位置,那么以前位于该位置的提供商以及位置大于position
所有提供者都向上移动一个位置(朝向已安装提供程序列表的末尾)。
如果已经安装了提供程序,则无法添加。
如果有安全管理员,则使用"insertProvider"
权限目标名称调用SecurityManager.checkSecurityAccess(java.lang.String)
方法,以查看是否可以添加新的提供程序。 如果此权限检查被拒绝, checkSecurityAccess
再次被调用"insertProvider."+provider.getName()
权限目标名称。 如果两个检查都被拒绝,则会抛出一个SecurityException
。
provider
- 要添加的提供者。
position
- 呼叫者对此提供商的偏好位置。
NullPointerException
- 如果提供程序为空
SecurityException
- 如果存在安全管理员,并且其
SecurityManager.checkSecurityAccess(java.lang.String)
方法拒绝访问以添加新提供程序
getProvider(java.lang.String)
, removeProvider(java.lang.String)
, SecurityPermission
public static int addProvider(Provider provider)
如果有安全管理员,则使用"insertProvider"
权限目标名称调用SecurityManager.checkSecurityAccess(java.lang.String)
方法,以查看是否可以添加新的提供程序。 如果此权限检查被拒绝, checkSecurityAccess
将再次使用"insertProvider."+provider.getName()
授权目标名称进行调用。 如果两个支票都被拒绝,则会抛出一个SecurityException
。
provider
- 要添加的提供者。
NullPointerException
- 如果提供程序为空
SecurityException
- 如果存在安全管理员,并且其
SecurityManager.checkSecurityAccess(java.lang.String)
方法拒绝访问以添加新的提供程序
getProvider(java.lang.String)
, removeProvider(java.lang.String)
, SecurityPermission
public static void removeProvider(String name)
当指定的提供程序被删除时,位于大于指定提供程序的位置的所有提供程序都向下移动一个位置(朝向已安装提供程序列表的头部)。
如果提供程序未安装或名称为空,则此方法将静默返回。
首先,如果有一个安全管理器,它的checkSecurityAccess
方法被调用与字符串"removeProvider."+name
看看是否可以删除提供程序。 如果默认实现checkSecurityAccess
使用(即未重写此方法),那么这将导致对安全管理器的一个电话checkPermission
方法有SecurityPermission("removeProvider."+name)
许可。
name
- 要删除的提供商的名称。
SecurityException
- 如果存在安全管理员,并且其
SecurityManager.checkSecurityAccess(java.lang.String)
方法拒绝访问以删除提供程序
getProvider(java.lang.String)
,
addProvider(java.security.Provider)
public static Provider[] getProviders()
public static Provider getProvider(String name)
name
- 要获取的提供商的名称。
removeProvider(java.lang.String)
,
addProvider(java.security.Provider)
public static Provider[] getProviders(String filter)
密码服务始终与特定的算法或类型相关联。 例如,数字签名服务始终与特定算法(例如,DSA)相关联,并且CertificateFactory服务始终与特定证书类型相关联(例如,X.509)。
选择标准必须用以下两种格式之一来指定:
加密服务名称不能包含任何点。
如果提供者实现指定的加密服务的指定算法或类型,则提供者满足指定的选择标准。
例如,对于X.509证书提供CertificateFactory实现的任何提供者都将满足“CertificateFactory.X.509”。
加密服务名称不能包含任何点。 <algorithm_or_type>和<attribute_name>之间必须有一个或多个空格。
如果提供者实现指定的加密服务的指定算法或类型,并且其实现满足指定的属性名/值对表示的约束,则提供者满足该选择标准。
例如,任何实施SHA1withDSA签名算法的提供者的密钥大小为1024(或更大)的“Signature.SHA1withDSA KeySize:1024”将被满足。
见Java Cryptography Architecture Standard Algorithm Name Documentation有关标准加密服务名称,标准算法名称和标准属性名称的信息。
filter
- 选择提供者的标准。
过滤器不区分大小写。
InvalidParameterException
- 如果过滤器不是所需的格式
NullPointerException
- 如果过滤器为空
getProviders(java.util.Map)
public static Provider[] getProviders(Map<String,String> filter)
选择标准由地图表示。 每个地图条目代表选择标准。 如果满足所有选择标准,则选择提供者。 此类地图中任何条目的关键字必须为以下两种格式之一:
加密服务名称不能包含任何点。
与键相关联的值必须是空字符串。
如果提供者实现指定的加密服务的指定算法或类型,则提供者满足该选择标准。
加密服务名称不能包含任何点。 <algorithm_or_type>和<attribute_name>之间必须有一个或多个空格。
与键相关联的值必须是非空字符串。 如果提供者实现指定的加密服务的指定算法或类型,并且其实现满足指定的属性名/值对表示的约束,则提供者满足该选择标准。
见Java Cryptography Architecture Standard Algorithm Name Documentation有关标准加密服务名称,标准算法名称和标准属性名称的信息。
filter
- 选择提供者的标准。
过滤器不区分大小写。
InvalidParameterException
- 如果过滤器不是所需的格式
NullPointerException
- 如果过滤器为空
getProviders(java.lang.String)
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
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
public static Set<String> getAlgorithms(String serviceName)
serviceName
- Java加密服务的名称(例如,Signature,MessageDigest,Cipher,Mac,KeyStore)。
注意:此参数不区分大小写。