1

我目前正在使用 PyCrypto 库为学术作业实施 ElGamal 加密,但出现以下错误:

溢出错误:无法将“int”放入索引大小的整数中

from Crypto import Random
from Crypto.Random import random
from Crypto.PublicKey import ElGamal
from Crypto.Util.number import GCD


message = "Hello!"

key = ElGamal.generate(1024, Random.new().read)

while 1:
    k = random.StrongRandom().randint(1, key.p - 1)

    if GCD(k, key.p - 1) == 1:
        break

h = key.encrypt(message, k)

d = key.decrypt(h)
print(d)

我不确定我是否错误地阅读了文档,但我基于此页面:

https://www.dlitz.net/software/pycrypto/api/current/Crypto.PublicKey.ElGamal.ElGamalobj-class.html#encrypt

如果有人有任何正确实现的代码示例,我将不胜感激。

4

2 回答 2

1

代替:

message = "Hello!"

在 python 3 中,您必须将文本字符串转换为二进制文件,如下所示:

message = b"Hello!"

只需在文本中的引号前添加 ab 即可。

于 2019-12-12T08:42:39.703 回答
0

您的情况下的消息应该是整数,您必须将单词“hello”转换为整数。

于 2019-07-19T20:06:12.420 回答