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

How do i establish two way encrypted server-client-connection in python?

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

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

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。