python-3.x - 如何在 python 中建立双向加密的服务器-客户端-连接?

标签 python-3.x sockets rsa

对于一个项目,我需要一个服务器和一个客户端。到目前为止没有问题。对我来说,困难在于必须对连接进行加密,因为将发送敏感信息。您可以使用 RSA 加密。我只是还不知道如何交换 key ,因此没有人可以拦截它们或获得任何其他机会接触它们。
由于我不知道,一般如何做,到目前为止我没有尝试任何东西。

最佳答案

这是 Python 中的 TLS 连接实现。所有 key 交换和加密数据都在协议(protocol)内完成。

import socket
import ssl

def main():
  #Define Host Name And Port (Port 443 Is Typical Encrypted Web Connection Port)
  host_name = "www.google.com"
  host_port = 443

  #Create Unencrypted Connection And Then Encrypted It By Wrapping It
  unencrypted_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
  unencrypted_socket.settimeout(10)
  encrypted_socket = ssl.wrap_socket(unencrypted_socket,ssl_version=ssl.PROTOCOL_TLSv1) #Optional Ciphers Spec Parameter Too

  #Connect To The Host, Send Data And Wait To Recieve Data
  encrypted_socket.connect((host_name,host_port))
  encrypted_socket.send(b"Hello")
  response = encrypted_socket.recv(512)

  #Close The Connection
  encrypted_socket.close()

main()

注意:我使用的是 Python 3.6,并且我认为从 Python 3.7 开始可以使用更新版本的 TLS。

关于python-3.x - 如何在 python 中建立双向加密的服务器-客户端-连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58524712/

相关文章:

执行 HTTP 调用时打印一个点到控制台的 Python 函数

sockets - 异步客户端套接字ManualResetEvent阻止执行

javascript - 适用于 Firefox/Google Chrome 的 Socket.io 客户端插件

c++ - 优雅地关闭 TCP 套接字

javax.crypto.BadPaddingException : unknown block type

C# 使用 RSA 加密 PHP 解密

java - JAVA上使用RSA加密解密的问题

python - 从包含元组值的字典中查找最小值和最大值

python - open()默认使用什么编码?

python - 如何启用日志记录以便消息保留在内部直到获取/清除?