python - 任务 Python 套接字和哈希库
问题描述
我有一个练习,但我有一个问题要从客户端发送 {message, SHA256}。我无法将这两条消息分别从客户端发送到服务器。
练习是:
通过套接字创建简单的客户端-服务器通信,客户端将以以下形式发送消息 → { message,SHA_256_hash_value}。一旦服务器接收到消息,它将对其进行解析,计算消息部分的 SHA_256 哈希值,并将其与接收到的哈希值进行比较。如果值匹配,它将向客户端发送“OK”,否则“消息已泄露”。
从评论中挽救的尝试:
import socket
import hashlib
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((socket.gethostname(), 1235))
print("ingrese mensaje")
mensaje = input()
while True:
mensaje_utf = str.encode(mensaje)
hash_object = hashlib.sha256(mensaje_utf)
hex_dig = hash_object.hexdigest()
s.send(mensaje_utf)
s.send(str.encode(hex_dig))
datos = s.recv(1024).decode()
print(datos)
mensaje = input()
s.close()
这是server.py
import socket
import hashlib
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((socket.gethostname(), 1235))
s.listen(5)
conn, address = s.accept()
print("Conexion desde: " + str(address))
while True:
datos = conn.recv(1024).decode()
if not datos:
break
print(datos)
conn.send (datos.encode())
conn.close()
现在的问题是如何将消息与:{message, SHA256} 分开
解决方案
您可能能够以所需的形式发送数据,替换如下发送调用:
import socket
import hashlib
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((socket.gethostname(), 1235))
print("ingrese mensaje")
mensaje = input()
while True:
mensaje_utf = str.encode(mensaje)
hash_object = hashlib.sha256(mensaje_utf)
hex_dig = hash_object.hexdigest()
message_to_send = "{" + mensaje + "," + hex_dig + "}"
s.send(str.encode(message_to_send))
datos = s.recv(1024).decode()
print(datos)
mensaje = input()
s.close()
推荐阅读
- excel - 使用 VBA 将 URL 文件查询中的数据导入 Excel 工作表
- vba - 根据VBA上的行号突出显示单元格
- scrapy - 为什么我不能将scrapy与https的代理一起使用
- javascript - PHP 文件报告成功但 MySQL 数据库未更新
- r - 在 R 中使用正则表达式捕获特定的 JSON-LD 属性
- haskell - Haskell 镜头 - 棱镜组合
- python - RuntimeError:尺寸不匹配,m1:[672 x 224],m2:[672 x 224]
- java - 使用 java 的 AWS 电子邮件模板使用(批量电子邮件)
- python-3.x - Python 单击 JavaScript 中的按钮/链接
- vba - 从多个获胜者的 Excel 中的一行中选择一个得分获胜者