(这纯粹是出于学术目的)

我已经使用弹性城堡实现了RSA和ElGamal,但我不确定如何隐含EC ElGamal。弹性城堡规范中的第4.4节说:“org.bouncycastle.crypto.ec软件包包含各种EC密码转换的实现,例如EC ElGamal。”但是,它并没有说明如何使用它。

我已经在密钥对生成中使用命名曲线了

ECNamedCurveTable.getParameterSpec("prime192v1")

但是我不知道算法参考例如“AES”,“RSA”进行初始化调用
KeyPairGenerator kpg = KeyPairGenerator.getInstance(algorithm, provider);

还是在使用ECC时是否需要更改其他内容?我认为ECC中的消息大小限制是基于曲线大小的吗?上面的示例是192位。

最佳答案

使用ECElGamalEncryptor,您只能加密曲线上的一个点。这实际上与教科书RSA(即模幂)相同,其中您只能加密一个大整数(小于模数)。

您应该使用诸如ECIES之类的方案通过椭圆曲线密码术进行加密。 ECIES基本上使用静态Diffie-Hellman来加密消息。

10-06 12:59