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
实例所对应算法的密钥。
支持的算法(不区分大小写)
- AES
- ARCFOUR
- Blowfish
- DES
- DESede
- HmacMD5、HmacSHA1、HmacSHA256、HmacSHA384、HmacSHA512
- RC2
- SunTlsPrf,
- SunTls12Prf,
- SunTlsMasterSecret,
- SunTlsKeyMaterial,
- SunTlsRsaPremasterSecret