问题标签 [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 回答
172 浏览

cryptography - ElGamal 消息加密

我知道我必须对任何消息进行编码才能使用 ElGamal 密码系统对其进行加密。但是,我知道当您收到一对数字 fe (5,3) 的消息时,这很容易。但是如果你有一个像 m=2 这样的,我们应该怎么做才能将它作为一对使用呢?

0 投票
1 回答
233 浏览

encryption - (ELGamal) 小步大步程序枫

嗨,我想知道是否有人可以帮助我解决以下问题我对 a 部分的尝试如下。我不明白为什么我的程序不起作用,它运行但在评估 b 部分的程序时没有返回任何值。我已经使用 print 命令来检查数组是否找到了它似乎正在做的匹配,但看起来它只是忽略了它 在此处输入图像描述

婴儿步巨步协议如下

在此处输入图像描述

EL gamal 的协议是在此处输入图像描述

我的程序如下:

当我执行 proc3(3, 64, 137) 它什么都不返回所以我把打印命令放进去,现在它给出了

正如你可以清楚地看到比赛是在 18,18 但由于某种原因它没有考虑到这一点,谁能看到我做错了什么?它开始变得有压力。还有我们如何提高程序的效率,以便它可以计算更大的 a、b 和 p 值的 x。对于 ci 部分,我知道我需要使用 a 部分中的程序。感谢您花时间阅读本文,我们将不胜感激。

我的c部分程序如下

其中proc3如下

密文:[12432485341, 2579085006, 13736574369, 4105371047, 9573017222,

7824534168, 10017411248, 13292180343, 2356887993, 9573017222,

10017411248, 13765667419, 9795214235, 10017411248, 2801282019,

608404939、4105371047、13765667419、11572790339、13765667419、

11765894302、10017411248、13765667419、4549765073、10017411248、

13736574369, 2579085006, 4549765073, 10017411248, 4549765073,

13765667419, 2801282019, 830601952, 4105371047, 10017411248,

7824534168, 13765667419, 13736574369, 2801282019, 7824534168,

10017411248, 830601952, 9573017222, 4327568060, 13765667419,

6076051114、8268928194、13292180343、10017411248、7824534168、

386207926、2801282019、4105371047、2579085006、6076051114、

608404939、13765667419、6076051114、830601952、13765667419、

4105371047、11765894302、10017411248、13765667419、13292180343、

13736574369, 10017411248, 608404939, 10017411248, 7824534168,

2134690980、13765667419、4105371047、11765894302、2801282019、

4105371047、13765667419、2579085006、608404939、13292180343、

11543697289, 2579085006, 7824534168, 10017411248, 4549765073,

13765667419、4994159099、5853854101、6076051114、830601952、

4327568060、6076051114、5853854101、10017411248、7824534168、

13765667419, 4105371047, 6076051114, 13765667419, 9573017222,

13292180343、10017411248、13765667419、4105371047、11765894302、

10017411248, 13765667419, 5853854101, 6076051114, 7824534168,

4549765073、13765667419、11572790339、13765667419、4105371047、

11765894302、2801282019、4105371047、13765667419、4105371047、

11765894302、10017411248、13765667419、4327568060、2801282019、

608404939、4549765073、13292180343、13736574369、2801282019、

11543697289, 10017411248, 13765667419, 5853854101, 2801282019,

13292180343、13765667419、11765894302、6076051114、7824534168、

7824534168、2579085006、8268928194、4327568060、2134690980、

13765667419, 11543697289, 7824534168, 10017411248, 13736574369,

2579085006、11543697289、2579085006、4105371047、6076051114、

9573017222、13292180343、2385981043、13765667419、3245676045、

9573017222、2801282019、2579085006、608404939、4105371047、

6105144164、13765667419、5853854101、11765894302、10017411248、

608404939, 13765667419, 9573017222, 13292180343, 10017411248,

4549765073、13765667419、4105371047、6076051114、13765667419、

4549765073、10017411248、13292180343、13736574369、7824534168、

2579085006、8268928194、10017411248、13765667419、4105371047、

11765894302、10017411248、13765667419、6076051114、13736574369、

13736574369, 2801282019, 13292180343, 2579085006, 6076051114,

608404939, 2801282019, 4327568060, 13765667419, 386207926,

2579085006、4327568060、4327568060、2801282019、6298248127、

10017411248, 13765667419, 4105371047, 11765894302, 7824534168,

6076051114、9573017222、6298248127、11765894302、13765667419、

5853854101、11765894302、2579085006、13736574369、11765894302、

13765667419、4105371047、11765894302、10017411248、2134690980、

13765667419, 11543697289, 2801282019, 13292180343, 13292180343,

10017411248、4549765073、6105144164、13765667419、9795214235、

10017411248、2801282019、608404939、4105371047、13765667419、

830601952、10017411248、386207926、10017411248、7824534168、

11572790339, 7824534168, 2579085006, 4549765073, 4549765073,

10017411248、608404939、13765667419、2801282019、608404939、

4549765073、13765667419、4105371047、9573017222、9795214235、

8268928194、4327568060、10017411248、4549765073、6076051114、

5853854101、608404939、2385981043、13765667419、4994159099、

5853854101、6076051114、830601952、4327568060、6076051114、

5853854101, 10017411248, 7824534168, 13765667419, 5853854101,

2801282019, 13292180343, 13765667419, 2801282019, 13765667419,

4105371047、6076051114、9573017222、7824534168、2579085006、

13292180343、4105371047、6105144164、13765667419、4105371047、

11765894302、10017411248、13765667419、830601952、2579085006、

7824534168, 13292180343, 4105371047, 13765667419, 10017411248,

386207926、10017411248、7824534168、13765667419、13292180343、

10017411248, 10017411248, 608404939, 13765667419, 6076051114,

608404939、13765667419、4105371047、11765894302、10017411248、

13765667419, 5438553125, 2579085006, 13292180343, 13736574369,

5853854101、6076051114、7824534168、4327568060、4549765073、

2385981043、13765667419、4994159099、6076051114、9573017222、

7824534168、2579085006、13292180343、4105371047、6105144164、

13765667419, 8713322220, 2579085006, 608404939, 13736574369,

10017411248, 5853854101, 2579085006, 608404939, 4549765073,

13765667419、11765894302、2801282019、4549765073、13765667419、

4549765073、10017411248、13736574369、2579085006、4549765073、

10017411248、4549765073、6105144164、13765667419、9795214235、

10017411248、2801282019、608404939、4105371047、13765667419、

8075824231、2579085006、4549765073、2579085006、6076051114、

4105371047、8075824231、2385981043]

0 投票
1 回答
506 浏览

javascript - 单向 ElGamal 代理重新加密实现

基于这个解释,我已经在 J​​avaScript 中实现了一个 ElGamal 方案(代码很糟糕,只是想快速测试一下)。

这似乎有效,最后的解密步骤返回原始数字。我现在想将其转换为基于以下想法的单向代理重新加密方案,取自本文(第 6 页,左栏)。

所以你不必阅读论文,其背后的逻辑是我们可以将私钥分成x两部分x1x2这样x = x1 + x2. 代理将使用 获取x1并解密x1,将结果传递给最终用户,最终用户将使用 解密x2。下图更详细地描述了代理的第一个数学运算,使用x1.

转换为单向 ElGamal

在哪里:

  • m = 明文消息
  • g = 组的生成器
  • r = 从 Zq 中随机选择的整数
  • x = 密钥

下一步是代理将其传递给最终用户,最终用户将使用 x2 获取明文 m(功能类似于上面的功能)。

现在,我尝试通过添加代码来实现这一点

遵循与上述等式相同的逻辑。但是,_decryptF不会2234266按应有的方式返回。奇怪的是,它总是返回 0。

我的问题是:谁能看到哪里出了问题?

0 投票
1 回答
781 浏览

node.js - 将 ElGamal 加密从加密数字转换为字符串

我有以下 ElGamal 加密方案

这适用于数字。但是,我希望能够使用它来加密字符串(顺便说一句,它不是常规的 ElGamal,我认为区别与此上下文无关,但有关更多详细信息,请参阅我问的这个问题

我考虑将字符串转换为整数,运行加密,并在需要时转换回字符串。我在 JS 中找不到这样做的方法(这里发布了这个问题,但代码不起作用)。还有另一个类似的问题,但它在 Java 中,并且提到的方法不是由 JS 中的 BigInt 实现提供的。

有什么简单的方法可以将字符串转换为 BigInt?

0 投票
1 回答
577 浏览

java - El Gamal 数字签名构造莫名其妙地失败

我正在尝试实现 El Gamal 数字签名方案,使用 BigInteger 类生成大素数。Samantha 生成公钥、私钥,选择一条消息,对其进行签名,然后 Victor 验证签名。

问题:输出总是说签名没有被验证,即验证算法在每次执行时都返回假,这会再次随机化数字。但是,当使用小的常数进行测试时,我得到了正确的结果。

问题:我在哪里做错了什么?我似乎无法得出结论。

到目前为止我的代码:

ElGamal_test - 用于预计算步骤和测试的方法

ElGamalSignature - 用于签名算法的方法

ElGamalVerification - 用于验证算法的方法

0 投票
0 回答
783 浏览

python - Python - 查找循环组生成器顺序的算法

我想找到g从循环组中选择的生成器的顺序,G = Z*q其中 q 是一个非常大(数百位长)的数字。我已经尝试了 Rosetta Code 中的以下代码,但它花费的时间太长:

0 投票
0 回答
932 浏览

cryptography - 使用 sagemath pollard rho 函数

我正在尝试使用 sagemath 来解决密码问题。我现在只有这段代码:

我不断收到以下错误:

我不知道为什么“+”是 Abelian 组中不受支持的操作数,因为在 sagemath 页面中,他们在椭圆曲线上使用它并且一切运行良好,我也自己尝试了他们的示例并且它成功了。

http://doc.sagemath.org/html/en/reference/groups/sage/groups/generic.html

0 投票
0 回答
64 浏览

python - 为加密数据提供的密码

我在python中做了一个项目。它是一个椭圆曲线密码学加密解密系统,我使用 EC ElGamal 算法进行加密和解密。曲线上的点绘制如下代码所示:

问题是每当我在大多数情况下输入密码时,密码都不起作用,并且显示以下错误。

0 投票
1 回答
176 浏览

c# - ElGamal 签名未验证

我想从此链接https://csharp.hotexamples.com/examples/Portable.Licensing.Security.Cryptography.ElGamal/ElGamalKeyStruct/-/php-elgamalkeystruct-class-examples.html实现 ElGamal 加密

这是我到目前为止所尝试的并且没有运气

VerifySignature总是false返回。

0 投票
1 回答
78 浏览

rsa - 如何确保公钥发送者/所有者也拥有​​其私钥?

当我们想用公钥加密消息时,如何确保公钥所有者也有自己的私钥?

规则是:

  1. 我们不希望有任何有关导致安全问题的私钥的信息。

2.验证必须在单个请求中完成,而不是在承诺中完成。

3.不要使用任何需要在密钥接收器上存储一些数据的方式。

我能看到的唯一方法是发送一条由公钥加密的随机消息,并要求密钥所有者将解密的消息进行比较,并确保公钥发送者也有其私钥;但是这种方式需要一个类似的承诺和两个步骤来验证和存储一些数据:

  1. 接收公钥并发送加密的随机字符串并等待

  2. 接收解密数据并将它们与原始字符串进行比较

现在您知道无需存储任何数据即可进行此验证的任何方法,并且只需通过单个请求即可通过公钥或其他方式发送一些额外的数据来进行验证?或者是否有任何其他内置此功能的公钥加密算法?