【发布时间】:2020-05-07 17:05:07
【问题描述】:
长话短说:我需要使用ElGamal 加密来对编码数字执行乘法运算。
我目前正在使用Kotlin 和OpenJDK 1.8,并找到了名为Bouncy Castle 的JCE 提供者。它在标准JCE API 内提供ElGamal 加密。但是,我完全不知道如何对从中得到的加密消息执行乘法运算。
Security.addProvider(BouncyCastleProvider())
val keys = KeyPairGenerator.getInstance("ElGamal", "BC").generateKeyPair()
val cipher = Cipher.getInstance("ElGamal/None/NoPadding", "BC")
cipher.init(Cipher.ENCRYPT_MODE, keys.public)
val eleven = BigInteger.valueOf(11)
val three = BigInteger.valueOf(3)
val eleven_e = cipher.doFinal(eleven.toByteArray())
val three_e = cipher.doFinal(three.toByteArray())
//Do three_e * eleven_e
【问题讨论】:
-
@PresidentJamesMoveonPolk 似乎可以使用 RSA/ECB/NoPadding。您可以将加密的输出扔到 BigIntegers,将它们相乘,再乘以 k 并解密底层字节数组。
-
@PresidentJamesMoveonPolk 请看我下面的答案,因为我已经找到了部分可行的解决方案
标签: java kotlin cryptography bouncycastle elgamal