问题标签 [elgamal]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
44 浏览

node.js - TypeError:无法读取未定义的属性“elGamal”

我运行下面的代码片段,我收到错误TypeError: Cannot read property 'elGamal' of undefined

0 投票
1 回答
196 浏览

java - 如何使用 ELGAMAL PGP 算法加密/解密内容,方法是使用 Bouncy Castle Java 库和 JKS 中持久保存的证书

我需要使用 PGP 和 ELGAMAL 算法加密和解密一些消息。我的密钥存储在 JKS 密钥库中。据我了解,我首先需要从 JKS 读取密钥/证书并将它们转换为 PGP 密钥,以便它们可以在 PGP 加密器中使用。

但是,当我尝试使用“JcaPGPKeyConverter”并且如果我为公钥类型提供“PublicKeyAlgorithmTags.ELGAMAL_GENERAL”时,我会得到“org.bouncycastle.openpgp.PGPException:未知 EC 算法”异常。

这是生成 PGP 公钥的转换器代码:

这是堆栈跟踪:

它适用于“PublicKeyAlgorithmTags.ECDH”(我在 JcaPGPKeyConverter 的源代码中找到),但在后面的步骤中,我从生成的 PGPPublicKey 中获取加密方法。所以如果我在转换器上使用 ECDH 并且只使用写在公钥对象上的算法,我想我不再使用 ELGAMAL 进行加密:

我在 Internet 上看到了 ELGAMAL 的示例,但都可以即时生成密钥。我需要使用保留在 JKS/JCEKS 中的密钥。

是否有另一种方法可以将从 JKS 读取的证书转换为 PGPPublicKey?或者我可以直接在 PGPEncryptedDataGenerator 上定义加密算法(ELGAMAL)吗?

谢谢你的帮助..

0 投票
1 回答
132 浏览

java - 如何使用 Bouncy Castle ElGamal 和 javax.crypto.Cipher 使加密(c1,c2)元组显式

要在 java 代码中使用 ElGamal 方案加密消息,我进行如下操作:

我从 ELGamal 方案中知道cipherText字节数组包含 (c1, c2) 并且我需要将 c1 作为 BigInteger 访问。

所以我的问题是:如何在字节数组和元组 (c1, c2) 之间进行转换?

谢谢

0 投票
1 回答
54 浏览

java - ElGamal 导入一个大素数

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

我发现当我使用 Bouncy Castle 时,我可以导入方案名称和“BC”。例如,Elgamal 加密。

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

我的问题是,我怎样才能从中得到生成器 g、顺序 q 和大素数 p,因为其他方案需要这些参数。

0 投票
0 回答
28 浏览

cryptography - 使用 GP/PARI 你将如何解决这个随机的 Elgamal 问题?

我知道如何手动解决这个问题,但我不知道如何使用 gp/pari 程序解决它。它基于随机 Elgamal

令 p = 739。给定以下使用随机 Elgamal 加密的消息 m1 的密文,m1 · m2 的密文是什么,其中 m2 ≡ 2 (mod p)?(c1,c2) = (246,609)

0 投票
0 回答
40 浏览

encryption - 八度。如何正确解出这个方程?[El Gamal 加密]

我试图弄清楚 El Gamal 加密是如何工作的,我被困在一个地方。

首先我计算了我的公共参数 [p,g]

p=199371203 [28 位强素数] 和 g=14 [生成器]

然后我生成随机私钥 - PrK=x=randi(p-1)=67805137 并计算公钥 - PuKA=a=mod_exp(g,x,p)=165152143

然后我得到公钥PuKB = 25479455

和加密随机数z的ElGamal密文cb=(e,d)=(84883628, 25479455)

所以我想解密这个密文z=e∗d^−x mod p我知道公式但不知道如何正确地做它是z=mod_exp(e*d,-x,p) 吗?

毕竟我形成了我的信息m=20010510

然后我计算消息M=z+m

现在我不知道如何通过计算 ElGamal 密文 C=(E,D)来加密消息M

0 投票
1 回答
57 浏览

python - Python:El Gamal 解密的大浮点算法

语境

El Gamal 方法的解密数学公式如下:

特别是在 Python 中,我想计算以下等价物:

上面 Python 代码中的问题是插入的数字会溢出或由于精度而导致 0.0。考虑以下示例:

上述示例的预期答案是 152015。

更多示例

在此处输入图像描述

尝试

我试图研究一种解决这个问题的策略,发现使用不同于math.pow()的 Python 的默认pow(x,y,z)可以提供帮助。

pow(x,y,z)等价于x**y % z

但是,我不能使用pow(x,y,z). 我尝试使用pow(15653, -3632, 262643),但我不能将pow(15653, -3632)的结果乘以923,然后作为最后一步,将 mod 乘以 262643。

换句话说,我正在尝试执行(x**y * a ) % z而不是x**y % z ,但显然存在 3 参数限制或操作数。pow(x,y,z)

我可以做些什么来计算 Python 中的数学公式?

0 投票
1 回答
131 浏览

cryptography - 寻找 20 位素数的生成器 g 我是 Elgamal

我很想知道是否有一种简单的方法/算法,通过它我可以获得 20 位素数的生成器 g 以在 Elgamal 密码系统中实现。

0 投票
0 回答
27 浏览

cryptography - 证明同一 ElGamal 对的两次重加密具有相同的解密

我正在开发一个互联网选举系统,该系统需要对选票进行洗牌,并附上洗牌合法性的交互式证明。我正在研究这篇论文(https://www.microsoft.com/en-us/research/publication/simple-verifiable-elections/),我被困在下面概述的部分:

通过释放单个值 (r'-r'')mod(p-1),可以证明两个 ElGamal 对 (x',y') 和 (x'',y'') 具有相同的解密,而无需与原始 ElGamal 对 (x,y) 的任何链接或关联

我设法获得了上面概述的值 (r'-r'')mod(p-1) 但我不确定如何使用该值来证明两个重新加密具有相同的解密。

谢谢你的时间,

安德烈。