public enum JCAEStandardName extends Enum<JCAEStandardName>
这个类是一个工具类,在使用JCA,JCE的API时可以使用到的。
使用JCA,JCE的API时,由于这部分的设计,在获取各种各样的的engine class的实例时,
例如MessageDigest.getInstance(String)。
因为名称比较固定,但容易出错,这个类就是方便名称的使用的。
MessageDigest.getInstance(JCAEngineInstanceName.MD5.getName());
Name目前有3种:Algorithm名称、Certificate名称、KeyStore名称、Service Attribute名称
Algorithm:
加密算法可以分为3大类:单向加密算法(也就是摘要算法)、对称加密算法、非对称加密算法。
其中单向加密算法是不需要进行解密的,所以在使用单向加密算法时,不需要使用key等API。
对称加密算法和非对称加密算法都需要进行发送者加密、接收者解密的过程,所以会使用Key相关的API。
对称加密算法使用的是SecretKey,非对称加密则使用的是PublicKey、PrivateKey。
算法名称类型可以分为:MessageDigest、Key、 Signature、 Random ,可以参考注解@Algorithm 。
MessageDigest算法、Key and Parameter算法的名称都比较简单,这里就不一一说明了。
Signature算法的name的命名规则:
1) <digest>with<encryption>:这种形式是MessageDigest算法与keyPair算法的结合;
2) <digest>with<encryption>and<mgf> mgf 是mark generation function,即掩码生成函数。
Signature算法相关的实例的名称,例如SHA1withDSA,其实就是keyPair算法+MessageDigest算法的结合。
这是因为Signature本来就是在PrivateKey的基础上对数据使用了MessageDigest算法,从而生成Signature。
Certificate:
著名的有X.509
KeyStore:
JKS、PKCS12
Service Attribute:
JKS、PKCS12
JCE中的名称太多了,也没有什么规律,这里就不指明了。可以参考:JCE 实例名称说明
| 枚举常量和说明 |
|---|
DSA
KeyPair, Key Parameter
|
ECDSA |
JKS
KeyStore
|
MD2 |
MD2_RSA |
MD5 |
MD5_RSA |
NONEwithDSA |
PKCS_12 |
RSA |
SHA_1
MessageDigest
|
SHA_256 |
SHA_384 |
SHA_512 |
SHA1_DSA
Digital Signature
|
SHA1_RSA |
X509
Certificate
|
| 限定符和类型 | 方法和说明 |
|---|---|
String |
getName() |
String |
toString() |
static JCAEStandardName |
valueOf(String name)
返回带有指定名称的该类型的枚举常量。
|
static JCAEStandardName[] |
values()
按照声明该枚举类型的常量的顺序, 返回
包含这些常量的数组。
|
@Algorithm(name="SHA-1", type=java.security.MessageDigest.class) public static final JCAEStandardName SHA_1
@Algorithm(name="SHA-256", type=java.security.MessageDigest.class) public static final JCAEStandardName SHA_256
@Algorithm(name="SHA-384", type=java.security.MessageDigest.class) public static final JCAEStandardName SHA_384
@Algorithm(name="SHA-512", type=java.security.MessageDigest.class) public static final JCAEStandardName SHA_512
@Algorithm(name="MD2", type=java.security.MessageDigest.class) public static final JCAEStandardName MD2
@Algorithm(name="MD5", type=java.security.MessageDigest.class) public static final JCAEStandardName MD5
@Algorithm(name="DSA", type={java.security.KeyPairGenerator.class,java.security.AlgorithmParameterGenerator.class}) public static final JCAEStandardName DSA
@Algorithm(name="RSA", type=java.security.KeyPairGenerator.class) public static final JCAEStandardName RSA
@Algorithm(name="SHA1withDSA", type=java.security.Signature.class) public static final JCAEStandardName SHA1_DSA
@Algorithm(name="MD2withRSA", type=java.security.Signature.class) public static final JCAEStandardName MD2_RSA
@Algorithm(name="MD2withRSA", type=java.security.Signature.class) public static final JCAEStandardName MD5_RSA
@Algorithm(name="SHA1withRSA", type=java.security.Signature.class) public static final JCAEStandardName SHA1_RSA
public static final JCAEStandardName ECDSA
public static final JCAEStandardName NONEwithDSA
public static final JCAEStandardName X509
public static final JCAEStandardName JKS
public static final JCAEStandardName PKCS_12
public static JCAEStandardName[] values()
for (JCAEStandardName c : JCAEStandardName.values()) System.out.println(c);
public static JCAEStandardName valueOf(String name)
name - 要返回的枚举常量的名称。IllegalArgumentException - 如果该枚举类型没有带有指定名称的常量NullPointerException - 如果参数为空值public String getName()
public String toString()
toString 在类中 Enum<JCAEStandardName>Copyright © 2019. All rights reserved.