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 实例名称说明 https://docs.oracle.com/en/java/javase/14/security/oracle-providers.html#GUID-FE2D2E28-C991-4EF9-9DBE-2A4982726313
| 枚举常量和说明 |
|---|
DKS |
DRBG |
DSA
KeyPair, Key Parameter
|
ECDSA |
JCEKS
KeyStore types
|
JKS |
MD2 |
MD2_RSA |
MD5 |
MD5_RSA |
NativePRNG
Perso Random Number Generate
|
NativePRNGBlocking |
NativePRNGNonBlocking |
NONE_RSA
Digital Signature
|
PKCS11 |
PKCS11PRNG |
PKCS12 |
RSA |
SHA_1
MessageDigest
|
SHA_256 |
SHA_384 |
SHA_512 |
SHA1_DSA |
SHA1_RSA |
SHA1PRNG |
SHA224_RSA |
SHA256_RSA |
SHA3_224_RSA |
SHA3_256_RSA |
SHA3_384_RSA |
SHA3_512_RSA |
SHA384_RSA |
SHA512_224_RSA |
SHA512_256_RSA |
SHA512_RSA |
Windows_PRNG |
X509
Certificate
|
| 限定符和类型 | 方法和说明 |
|---|---|
String |
getName() |
String |
toString() |
static JCAEStandardName |
valueOf(String name)
返回带有指定名称的该类型的枚举常量。
|
static JCAEStandardName[] |
values()
按照声明该枚举类型的常量的顺序, 返回
包含这些常量的数组。
|
@Algorithm(name="NativePRNG", apply=java.security.SecureRandom.class) public static final JCAEStandardName NativePRNG
@Algorithm(name="NativePRNGBlocking", apply=java.security.SecureRandom.class) public static final JCAEStandardName NativePRNGBlocking
@Algorithm(name="NativePRNGNonBlocking", apply=java.security.SecureRandom.class) public static final JCAEStandardName NativePRNGNonBlocking
@Algorithm(name="PKCS11", apply=java.security.SecureRandom.class) public static final JCAEStandardName PKCS11PRNG
@Algorithm(name="DRBG", apply=java.security.SecureRandom.class) public static final JCAEStandardName DRBG
@Algorithm(name="SHA1PRNG", apply=java.security.SecureRandom.class) public static final JCAEStandardName SHA1PRNG
@Algorithm(name="Windows-PRNG", apply=java.security.SecureRandom.class) public static final JCAEStandardName Windows_PRNG
@Algorithm(name="SHA-1", apply=java.security.MessageDigest.class) public static final JCAEStandardName SHA_1
@Algorithm(name="SHA-256", apply=java.security.MessageDigest.class) public static final JCAEStandardName SHA_256
@Algorithm(name="SHA-384", apply=java.security.MessageDigest.class) public static final JCAEStandardName SHA_384
@Algorithm(name="SHA-512", apply=java.security.MessageDigest.class) public static final JCAEStandardName SHA_512
@Algorithm(name="MD2", apply=java.security.MessageDigest.class) public static final JCAEStandardName MD2
@Algorithm(name="MD5", apply=java.security.MessageDigest.class) public static final JCAEStandardName MD5
@Algorithm(name="DSA", apply={java.security.KeyPairGenerator.class,java.security.AlgorithmParameterGenerator.class}) public static final JCAEStandardName DSA
@Algorithm(name="RSA", apply=java.security.KeyPairGenerator.class) public static final JCAEStandardName RSA
@Algorithm(name="NONEwithRSA", apply=java.security.Signature.class) public static final JCAEStandardName NONE_RSA
@Algorithm(name="MD2withRSA", apply=java.security.Signature.class) public static final JCAEStandardName MD2_RSA
@Algorithm(name="MD5withRSA", apply=java.security.Signature.class) public static final JCAEStandardName MD5_RSA
@Algorithm(name="SHA1withRSA", apply=java.security.Signature.class) public static final JCAEStandardName SHA1_RSA
@Algorithm(name="SHA224withRSA", apply=java.security.Signature.class) public static final JCAEStandardName SHA224_RSA
@Algorithm(name="SHA256withRSA", apply=java.security.Signature.class) public static final JCAEStandardName SHA256_RSA
@Algorithm(name="SHA384withRSA", apply=java.security.Signature.class) public static final JCAEStandardName SHA384_RSA
@Algorithm(name="SHA512withRSA", apply=java.security.Signature.class) public static final JCAEStandardName SHA512_RSA
@Algorithm(name="SHA512/224withRSA", apply=java.security.Signature.class) public static final JCAEStandardName SHA512_224_RSA
@Algorithm(name="SHA512/256withRSA", apply=java.security.Signature.class) public static final JCAEStandardName SHA512_256_RSA
@Algorithm(name="SHA3-224withRSA", apply=java.security.Signature.class) public static final JCAEStandardName SHA3_224_RSA
@Algorithm(name="SHA3-256withRSA", apply=java.security.Signature.class) public static final JCAEStandardName SHA3_256_RSA
@Algorithm(name="SHA3-384withRSA", apply=java.security.Signature.class) public static final JCAEStandardName SHA3_384_RSA
@Algorithm(name="SHA3-512withRSA", apply=java.security.Signature.class) public static final JCAEStandardName SHA3_512_RSA
@Algorithm(name="SHA1withDSA", apply=java.security.Signature.class) public static final JCAEStandardName SHA1_DSA
public static final JCAEStandardName ECDSA
public static final JCAEStandardName X509
public static final JCAEStandardName JCEKS
public static final JCAEStandardName JKS
public static final JCAEStandardName DKS
public static final JCAEStandardName PKCS11
public static final JCAEStandardName PKCS12
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 © 2021. All rights reserved.