ElGamal 导入一个大素数

问题描述

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

我发现当我使用充气城堡时,我可以导入方案的名称和“BC”。例如,Elgamal 加密。

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

我的问题是如何从中得到生成器 g、阶数 q 和大素数 p,因为其他方案需要这些参数。

解决方法

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

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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...