java.lang.Object java.security.Security
public final class Security
此类集中了所有的安全属性和常见的安全方法。其主要用途之一是管理提供者。
方法摘要 | |
---|---|
static int |
addProvider(Provider provider) 将提供者添加到下一个可用位置。 |
static String |
getAlgorithmProperty(String algName, String propName) 已过时。 此方法用来返回 "SUN" 密码服务提供者的主文件中的专有属性的值,以便确定如何解析特定于算法的参数。使用新的基于提供者的、与算法无关的 AlgorithmParameters 和 KeyFactory 引擎类(在 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 |
方法详细信息 |
---|
@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."+provider.getName()
的 checkSecurityAccess
方法可查看是否可以添加新的提供者。如果使用 checkSecurityAccess
的默认实现(即未重写此方法),则会导致调用带有 SecurityPermission("insertProvider."+provider.getName())
权限的安全管理器的 checkPermission
方法。
provider
- 要添加的提供者。
position
- 调用方调用此提供者的首选位置。
NullPointerException
- 如果提供者为 null
SecurityException
- 如果安全管理器已存在,且其
SecurityManager.checkSecurityAccess(java.lang.String)
方法拒绝对新的提供者进行添加访问
getProvider(java.lang.String)
,
removeProvider(java.lang.String)
,
SecurityPermission
public static int addProvider(Provider provider)
首先,如果有安全管理器,则调用带有字符串 "insertProvider."+provider.getName()
的 checkSecurityAccess
方法可查看是否可以添加新的提供者。如果使用 checkSecurityAccess
的默认实现(即未重写此方法),则会导致调用带有 SecurityPermission("insertProvider."+provider.getName())
权限的安全管理器的 checkPermission
方法。
provider
- 要添加的提供者。
NullPointerException
- 如果提供者为 null
SecurityException
- 如果安全管理器已存在,且其
SecurityManager.checkSecurityAccess(java.lang.String)
方法拒绝对新的提供者进行添加访问
getProvider(java.lang.String)
,
removeProvider(java.lang.String)
,
SecurityPermission
public static void removeProvider(String 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)
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 签名算法、keysize 为 1024(或更大)的提供者都可以满足 "Signature.SHA1withDSA KeySize:1024" 的需要。
有关标准加密服务名称、标准算法名称和标准属性名称的信息,请参阅 Java Cryptography Architecture API Specification & Reference 中的附录 A。
filter
- 选择提供者的标准。过滤器是区分大小写的。
InvalidParameterException
- 如果过滤器不是需要的格式
NullPointerException
- 如果过滤器为 null
getProviders(java.util.Map)
public static Provider[] getProviders(Map<String,String> filter)
选择标准将通过映射表示。每个映射项都表示一种选择标准。当且仅当某个提供者满足所有选择标准时才可选择它。此映射中任何项的密钥都必须使用以下两种格式之一:
加密服务名不能包含任何圆点。
与密钥相关的值必须为空字符串。
当且仅当某个提供者为指定的加密服务实现了指定的算法或类型时,该提供者才能满足此选择标准。
加密服务名不能包含任何圆点。在 <algorithm_or_type> 与 <attribute_name> 之间必须有一个或多个空格字符。
与密钥相关的值必须为非空字符串。当且仅当某个提供者为指定的加密服务实现了指定的算法或类型,并且其实现可以满足由指定的属性名称/值对表达的限制要求时,该提供者才可以满足此选择标准。
有关标准加密服务名称、标准算法名称和标准属性名称的信息,请参阅 Java Cryptography Architecture API Specification & Reference 中的附录 A。
filter
- 选择提供者的标准。过滤器是区分大小写的。
InvalidParameterException
- 如果过滤器不是需要的格式
NullPointerException
- 如果过滤器为 null
getProviders(java.lang.String)
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
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
public static Set<String> getAlgorithms(String serviceName)
serviceName
- Java 加密服务的名称(例如,Signature、MessageDigest、Cipher、Mac、KeyStore)。注:此参数是区分大小写的。