java.security.interfaces

接口
public interface DSAKeyPairGenerator

能够生成 DSA 密钥对的对象的接口。

可以对每个 initialize 方法调用任意多次。如果没有对 DSAKeyPairGenerator 调用 initialize 方法,则默认使用预计算的 p、q、g 参数并使用 SecureRandom 的某个实例作为随机位源,生成一个 1024 位的密钥。

希望指示特定于 DSA 参数的用户,以及希望生成适合于 DSA 算法使用的密钥对的用户通常可以进行以下操作:

  1. 通过调用 KeyPairGenerator getInstance 方法并将 "DSA" 作为其参数,获取 DSA 算法的密钥对生成器。

  2. 通过将结果强制转换为 DSAKeyPairGenerator,并从此 DSAKeyPairGenerator 接口调用 initialize 方法之一,初始化该生成器。

  3. 通过从 KeyPairGenerator 类调用 generateKeyPair 方法生成一个密钥对。

注:并非总是需要对 DSA 密钥对生成器执行特定于算法的初始化。也就是说,并非总是需要调用此接口中的 initialize 方法。接受特定于算法的参数的默认值时,只需要使用 KeyPairGenerator 接口 initialize 方法的与算法无关的初始化。

另请参见:
KeyPairGenerator

方法摘要
 void initialize(DSAParams params, SecureRandom random)
          使用 DSA 系列参数(p、q 和 g)和可选 SecureRandom 位源初始化密钥对生成器。
 void initialize(int modlen, boolean genParams, SecureRandom random)
          使用给定系数长度(而不是参数)和可选 SecureRandom 位源初始化密钥对生成器。
 

方法详细信息

initialize

void initialize(DSAParams params,
                SecureRandom random)
                throws InvalidParameterException
使用 DSA 系列参数(p、q 和 g)和可选 SecureRandom 位源初始化密钥对生成器。如果需要 SecureRandom 位源但没有提供,即 SecureRandom 为 null,则使用默认 SecureRandom 实例。

参数:
params - 用于生成密钥的参数。
random - 用于生成密钥位的随机位源;可以为 null。
抛出:
InvalidParameterException - 如果 params 值无效或为 null。

initialize

void initialize(int modlen,
                boolean genParams,
                SecureRandom random)
                throws InvalidParameterException
使用给定系数长度(而不是参数)和可选 SecureRandom 位源初始化密钥对生成器。如果需要 SecureRandom 位源但没有提供,即 SecureRandom 为 null,则使用默认 SecureRandom 实例。

如果 genParams 为 true,则此方法生成新的 p、q 和 g 参数。如果为 false,则该方法使用对应于所请求系数长度的预计算参数。如果不存在对应于该系数长度的预计算参数,则将抛出一个异常。确保总是存在系数长度为 512 和 1024 位的对应默认参数。

参数:
modlen - 以位为单位的系数长度。有效值在 512 到 1024(包括两者)之间,且是 8 的倍数。
random - 用于生成密钥位的随机位源;可以为 null。
genParams - 是否生成对应所请求系数长度的新参数。
抛出:
InvalidParameterException - 如果 modlen 不在 512 到 1024 之间,或者 genParams 为 false,并且不存在对应所请求系数长度的预计算参数。