(这纯粹是出于学术目的)
我已经使用弹性城堡实现了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来加密消息。