用python比较两个数大的_python - 比较两个非常大的数字时Python不一致的错误 - 堆栈内存溢出...

我是python的新手,我正在编写一个安全的ftp服务器/客户端来处理文件的基本上传/下载(但加密)。

为确保客户端具有密钥,我加密并发送随机的32字节数。 客户端必须解密该号码,添加一个,重新加密,然后将其返回给服务器。 服务器检查响应是否为随机数+ 1,然后在它们等效的情况下继续连接。 问题是这种方式在90%的情况下起作用,但有时会失败(即使客户端发送了良好的响应)。

if int.from_bytes(challenge, "big") + 1 == int.from_bytes(response, "big"):

print("Good\nExpected: {0}\nReceived: {0}".format(

int.from_bytes(challenge, "big") + 1,

int.from_bytes(response, "big")))

else:

print("Bad\nExpected: {0}\nReceived: {0}".format(

int.from_bytes(challenge, "big") + 1,

int.from_bytes(response, "big")))

10次​​中的9次,这进入True状态,​​但有时会失败。 这些是失败时的例子:

Bad

Expected:

65159048323870645118410560973513118036375130115063959378348917255680432299875

Received:

65159048323870645118410560973513118036375130115063959378348917255680432299875

Bad

Expected:

94602782648778784750235610259612519850690550920952731294858863927077528757933

Received:

94602782648778784750235610259612519850690550920952731294858863927077528757933

请注意,上述预期和收到的每一个实际上都是相同的。

以下是一些成功的数字示例:

Good

Expected:

91751260209520864629218443027060768890746721638897648279482154562044918570881

Received:

91751260209520864629218443027060768890746721638897648279482154562044918570881

Good

Expected:

104504930179798203375748204555227260444250367405369759767776407892919812999121

Received:

104504930179798203375748204555227260444250367405369759767776407892919812999121

知道发生了什么事吗? 谢谢你的时间。 编辑:代码段:

服务器端:

challenge = os.urandom(32)

socket.send_msg(challenge, encrypt=True)

response = socket.recv_msg(32, decrypt=True)

if int.from_bytes(challenge, "big") + 1 != int.from_bytes(response, "big"):

print("Expected: {0}\nReceived: {0}".format(int.from_bytes(challenge, "big") + 1, int.from_bytes(response, "big")))

客户端:

challenge = self._socket.recv_raw(32, decrypt=True)

challenge = int.from_bytes(challenge, "big") + 1

self.sckt.send_msg(challenge.to_bytes(32, "big"), encrypt=True)

请注意,我已经彻底测试了加密代码和套接字消息传递协议,这些都不是问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值