JCA 实践记录——KeyGenerator

KeyGenerator 用于生成对称加密算法中使用密钥。

实例化

KeyGenerator没有公开的构造方法,所以只能调用其静态方法getInstace进行实现化。这个方法有多个重载如下:

public static final KeyGenerator getInstance(String algorithm) 
     throws NoSuchAlgorithmException

public static final KeyGenerator getInstance(String algorithm, Provider provider)
     throws NoSuchAlgorithmException 

public static final KeyGenerator getInstance(String algorithm, String provider) 
     throws NoSuchAlgorithmException, NoSuchProviderException

我们通常使用的是public static final KeyGenerator getInstance(String algorithm);此方法需要一个字符串作为参数,用于说明使用哪个密钥算法。

初始化

KeyGenerator 中可用的初始化方法如下:

public final void init(AlgorithmParameterSpec algorithmParameterSpec ) 
    throws InvalidAlgorithmParameterException;

public final void init(AlgorithmParameterSpec algorithmParameterSpec , SecureRandom random) 
    throws InvalidAlgorithmParameterException;

public final void init(AlgorithmParameterSpec algorithmParameterSpec , SecureRandom random) 
    throws InvalidAlgorithmParameterException;

public final void init(int size);

public final void init(int size, SecureRandom random);

public final void init(SecureRandom random);

通常情况下我们使用public final void init(int size);就足够了。

核心方法 generateKey

public final SecretKey generateKey()

生成一个当前KeyGenerator实例所对应算法的密钥。

支持的算法(不区分大小写)

  1. AES
  2. ARCFOUR
  3. Blowfish
  4. DES
  5. DESede
  6. HmacMD5、HmacSHA1、HmacSHA256、HmacSHA384、HmacSHA512
  7. RC2
  8. SunTlsPrf,
  9. SunTls12Prf,
  10. SunTlsMasterSecret,
  11. SunTlsKeyMaterial,
  12. SunTlsRsaPremasterSecret

你可能感兴趣的:(JCA 实践记录——KeyGenerator)