socket加密传输

在网络通信中,保护数据的安全性是非常重要的。Socket模块本身并不提供对数据的加密传输功能,但可以与其他加密协议或库结合使用,实现加密传输。

常见的加密传输方式包括SSL/TLS和SSH

SSL/TLS加密传输

说明:

  1. 使用Python的ssl模块可以对Socket连接进行SSL/TLS加密。
  2. 首先需要创建一个Socket对象,然后使用ssl.wrap_socket()方法将其包装为加密的套接字。
  3. 在包装过程中,可以指定SSL/TLS相关的参数、证书文件等。
  4. 之后就可以通过加密的套接字进行通信了。

示例:

复制代码
 1 import ssl
 2 import socket
 3 
 4 # 创建未加密的Socket对象
 5 server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
 6 server_socket.bind(('localhost', 8888))
 7 server_socket.listen(5)
 8 
 9 # 使用ssl.wrap_socket()进行包装,创建加密的套接字
10 ssl_sock = ssl.wrap_socket(server_socket, keyfile='server.key', certfile='server.crt', server_side=True)
11 
12 print("服务器已启动,等待连接...")
13 
14 while True:
15     # 接受客户端连接
16     client_sock, addr = ssl_sock.accept()
17     print(f"收到来自 {addr} 的连接请求。")
18 
19     # 进行加密通信
20     while True:
21         data = client_sock.recv(1024).decode()
22         if not data:
23             break
24         print(f"收到消息:{data}")
25         response = "Hello, Client!"
26         client_sock.send(response.encode())
27 
28     # 关闭连接
29     client_sock.close()
复制代码

SSH加密传输

说明:

  1. 使用Paramiko库可以在Python中实现SSH协议的功能,包括加密的传输和远程命令执行等。
  2. Paramiko提供了ssh模块,可以创建SSHClient对象进行SSH连接和通信。
  3. 通过SSHClient对象可以进行认证、建立加密通道,然后进行数据传输。

示例:

复制代码
 1 import paramiko
 2 
 3 # 创建SSHServer对象
 4 ssh_server = paramiko.SSHServer()
 5 
 6 # 设置服务器的主机密钥
 7 host_key = paramiko.RSAKey.generate(2048)
 8 ssh_server.add_host_key(host_key)
 9 
10 print("服务器已启动,等待连接...")
11 
12 while True:
13     # 接受客户端连接
14     client, addr = ssh_server.accept()
15     print(f"收到来自 {addr} 的连接请求。")
16 
17     # 进行认证
18     transport = client.get_transport()
19     transport.auth_none(username='test')
20 
21     # 打开一个会话
22     session = transport.open_session()
23     session.exec_command('ls -l')
24 
25     # 获取输出结果
26     stdout = session.makefile('rb', -1).readlines()
27     for line in stdout:
28         print(line)
29 
30     # 关闭会话和连接
31     session.close()
32     client.close()
复制代码

上述示例使用Paramiko库创建了一个SSH服务器,并接受客户端的连接请求。之后进行认证,执行远程命令并获取输出结果。通过Paramiko库实现的SSH服务器可以实现安全加密的数据传输和远程命令执行功能。

posted @   Allen_Hao  阅读(507)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示