Most visited

Recently visited

Added in API level 1

Security

public final class Security
extends Object

java.lang.Object
   ↳ java.security.Security


该类集中了所有安全属性和常见的安全方法。 其主要用途之一是管理提供商。

Summary

Public methods

static int addProvider(Provider provider)

向下一个可用位置添加提供者。

static String getAlgorithmProperty(String algName, String propName)

此方法在API级别1中已弃用。此方法用于返回“SUN”加密服务提供程序的主文件中专有属性的值,以确定如何解析算法特定的参数。 AlgorithmParameters使用新的基于提供者和算法独立的引擎类(在J2SE版本1.2平台中引入) AlgorithmParametersKeyFactory

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<StringString> 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

Public methods

addProvider

Added in API level 1
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 checkSecurityAccess(String) method denies access to add a new provider

也可以看看:

getAlgorithmProperty

Added in API level 1
String getAlgorithmProperty (String algName, 
                String propName)

此方法在API级别1中已弃用。
此方法用于返回“SUN”加密服务提供程序主文件中专有属性的值,以确定如何解析算法特定的参数。 AlgorithmParameters ,请使用新的基于提供程序和算法独立的引擎类(在J2SE 1.2版平台中引入) AlgorithmParametersKeyFactory

获取算法的指定属性。 算法名称应该是标准名称。 有关标准算法名称的信息,请参阅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.

getAlgorithms

Added in API level 1
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.

getProperty

Added in API level 1
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 checkPermission(Permission) method denies access to retrieve the specified security property value
NullPointerException is key is null

也可以看看:

getProvider

Added in API level 1
Provider getProvider (String name)

返回使用指定名称安装的提供程序(如果有)。 如果没有安装指定名称的提供程序或名称为空,则返回null。

Parameters
name String: the name of the provider to get.
Returns
Provider the provider of the specified name.

也可以看看:

getProviders

Added in API level 1
Provider[] getProviders (Map<StringString> filter)

返回一个数组,其中包含满足指定*选择标准的所有已安装提供程序;如果未安装此类提供程序,则返回null。 返回的提供者按照他们的preference order进行排序

选择标准由地图表示。 每个映射条目代表一个选择标准。 如果满足所有选择标准,则选择提供者。 此类地图中任何条目的关键字必须采用以下两种格式之一:

  • <crypto_service>.<algorithm_or_type>

    加密服务名称不得包含任何点。

    与键关联的值必须是空字符串。

    如果提供者为指定的加密服务实现指定的算法或类型,则提供者满足此选择标准。

  • <crypto_service>.<algorithm_or_type> <attribute_name>

    加密服务名称不得包含任何点。 <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

也可以看看:

getProviders

Added in API level 1
Provider[] getProviders ()

返回包含所有已安装提供程序的数组。 数组中提供者的顺序是他们的偏好顺序。

Returns
Provider[] an array of all the installed providers.

getProviders

Added in API level 1
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密钥大小: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

也可以看看:

insertProviderAt

Added in API level 1
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 checkSecurityAccess(String) method denies access to add a new provider

也可以看看:

removeProvider

Added in API level 1
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 checkSecurityAccess(String) method denies access to remove the provider

也可以看看:

setProperty

Added in API level 1
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 checkPermission(Permission) method denies access to set the specified security property value
NullPointerException if key or datum is null

也可以看看:

Hooray!