0

我最近实施了多种加密方案。我打算使用 Java Bouncy Castle。我发现导入该方案非常容易。我的第一个实现是 ElGamal 加密。我的问题是如何导入我生成的大素数 p 和顺序 q 并使用这些参数生成带有 Bouncy castle 的密钥对。

我发现当我使用 Bouncy Castle 时,我可以导入方案名称和“BC”。例如,Elgamal 加密。

KeyPairGenerator keyGen = KeyPairGenerator.getInstance("ElGamal", "BC");

我的问题是,我怎样才能从中得到生成器 g、顺序 q 和大素数 p,因为其他方案需要这些参数。

4

1 回答 1

1

您不会“获取”字段参数,而是提供它们。请注意,您只需要 p 和 g;尽管生成器 g 确实(必须)在 Z_p^* 中具有较大的素数顺序 q,但 ElGamal 实现不使用或不需要该顺序。

KeyPairGenerator.init使用 BouncyElGamalParameterSpec或 JCA 的DHParameterSpec. JCA 没有为 ElGamal 定义类(或算法),但使用的数学字段与它定义的 Diffie-Hellman 相同,因此 Bouncy 允许您“重新利用”DH 类。(就像 PAW Patrol 上的 Rocky:不要丢失它,重复使用它!)

于 2021-07-15T16:28:10.933 回答