【问题标题】:EC ElGamal in Bouncy castle for JavaEC ElGamal 在 Bouncy 城堡中的 Java
【发布时间】:2015-02-21 16:39:00
【问题描述】:

(这纯粹是为了学术目的)

我已经使用充气城堡实现了 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 位的。

【问题讨论】:

  • 查看这个相关的answer on crypto,它展示了如何将消息转换为一个点。
  • this answer by Rasmus 应该会给你最后一块拼图。
  • 第二个链接很有用,所以,充气城堡没有内置的 koblitz 方法这样的编码?
  • 我不知道,我没见过,但看起来 ec 加密进行了相当大的改革。最好在充气城堡的加密开发邮件列表中询问,而不是在这里。
  • 查看了源代码。我见过提到 Koblitz 曲线和支持点压缩,但没有提到 Koblitz 方法本身。我尝试使用点压缩技巧来做到这一点,但失败了。

标签: java cryptography public-key-encryption elliptic-curve


【解决方案1】:

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

您应该使用 ECIES 等方案来使用椭圆曲线密码术进行加密。 ECIES 基本上使用静态 Diffie-Hellman 来加密消息。

【讨论】:

  • 我知道 ECIES 是什么。就像我说的那样,这纯粹是学术性的,我正在对不同的实现进行测试。如何使用ECElGamalEncryptor?充气城堡是否具有将消息转换为点的编码功能?还是引擎内置的?
  • 好吧,不得不承认我现在也被这个问题困住了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-12
  • 1970-01-01
  • 2012-11-23
  • 1970-01-01
  • 2016-03-14
  • 1970-01-01
相关资源
最近更新 更多