Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-如何通过套接字交换AES密钥_Python_Sockets_Encryption_Pycrypto - Fatal编程技术网

Python-如何通过套接字交换AES密钥

Python-如何通过套接字交换AES密钥,python,sockets,encryption,pycrypto,Python,Sockets,Encryption,Pycrypto,我正在尝试创建一个通过套接字从服务器获取AES密钥的客户端 客户端和服务器都有以下代码: import base64 from Crypto.Cipher import AES from Crypto import Random BS = 16 pad = lambda s: s + (BS - len(s) % BS) * chr(BS - len(s) % BS) unpad = lambda s : s[:-ord(s[len(s)-1:])] class AESCipher: d

我正在尝试创建一个通过套接字从服务器获取AES密钥的客户端

客户端和服务器都有以下代码:

import base64
from Crypto.Cipher import AES
from Crypto import Random

BS = 16
pad = lambda s: s + (BS - len(s) % BS) * chr(BS - len(s) % BS) 
unpad = lambda s : s[:-ord(s[len(s)-1:])]

class AESCipher:
 def __init__( self, key ):
    self.key = key

 def encrypt( self, raw ):
    raw = pad(raw)
    iv = Random.new().read( AES.block_size )
    cipher = AES.new( self.key, AES.MODE_CBC, iv )
    return base64.b64encode( iv + cipher.encrypt( raw ) ) 

 def decrypt( self, enc ):
    enc = base64.b64decode(enc)
    iv = enc[:16]
    cipher = AES.new(self.key, AES.MODE_CBC, iv )
    return unpad(cipher.decrypt( enc[16:] ))

如何将AES密钥从服务器交换到客户端?

我正在做类似的事情。我使用RSA生成了一个随机密钥,然后将公钥从客户端发送到服务器(假设客户端是生成AES密钥的客户端)。因此,服务器加密密钥并将其发送给客户端。客户端使用的是私有RSA密钥对AES密钥进行解密

您是在问如何完成密钥交换吗?这可能相当复杂,实际上并不是一个编程问题。“您可能应该把这个问题交给加密堆栈交换,或者更好的是,研究一下基本的密码学。”zindorsky感谢您的回答。如果你说的话,我会做更多的研究。当我有更多问题时,我能再次与你联系吗?当然。但我不是密钥交换协议的专家。