我有一個基本的服務器和一個客戶端設定
我如何:
如果我將 AES 加密與 python 給出的標準庫一起使用。我是否必須已經在兩個代碼中對加密密鑰進行“硬編碼”,還是有一種方法可以隨機重繪 密鑰而不對其進行“硬編碼”并在兩側保持相同?如果是,如何?
因為在另一個執行緒中 使用 Python 中的套接字發送加密字串 他們已經在連接的雙方都給出了加密密鑰......
服務器.py:
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(("IP", 1234))
s.listen(5)
while True:
clientsocket, address = s.accept()
print(f"Connection from {address} established!")
clientsocket.send(bytes("Hello World!", "utf-8"))
客戶端.py:
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("IP", 1234))
msg = s.recv(1024)
print(msg.decode("utf-8"))
uj5u.com熱心網友回復:
AES 僅與固定密鑰加密有關,與密鑰管理無關。根據您的示例,您似乎實際上想要保護兩方之間基于套接字的通信。請為此使用 TLS - 這是一個為此目的而完善的協議(HTTPS 的基礎),它關心身份驗證、加密、密鑰管理……
強烈建議使用此類已建立的解決方案,而不是構建自己的解決方案,因為后者很容易出錯。例如,您參考的執行緒在純 CBC 模式下使用 AES,該模式不提供任何完整性。這意味著中間人攻擊者可以更改加密資料,而通信對等方無法檢測到此類修改。默認情況下,TLS 會妥善處理所有這些問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/398080.html
上一篇:在我用SYN ACK資料包回復SYN資料包后,開始從客戶端套接字獲取RST資料包。任何人都可以看看我制定的標題
下一篇:做TCP警告意味著資料包被忽略,"Wireshark(Warning/Malformed):Shortsegment.Segment/fragmentdoesnotcontainafullT
