Python TCP套接字发送AES加密字典

时间:2016-06-06 09:05:01

标签: python sockets dictionary encryption tcp

我目前正在起草一个即将推出的Python项目,我需要通过互联网安全地将客户端的Python字典发送到服务器。

截至目前,我正在考虑使用简单TCP communication并使用AES在发送字典之前加密字典。

我的问题是,这是否可行。当我收到服务器上的信息,然后用共享密钥解密时,结果仍然是字典吗?

1 个答案:

答案 0 :(得分:1)

有些库支持任意对象的加密,因为它们内部有一个序列化器/反序列化器,但PyCrypto不是这样的库。您需要在Python 2中提供二进制字符串或在Python 3中提供bytes对象。

为了获得这些,您需要序列化复杂的数据结构,如字典。之后,您可以对其进行加密并通过套接字发送。在另一端,您将需要解密它并反序列化。序列化有很多种方法。 this question的答案包含其中一些。

反序列化外部数据可能非常危险,因为某些算法/格式不能抵御故障攻击,例如Python的pickle。因此,使用消息验证代码验证密文非常重要,必须在尝试解密或甚至反序列化之前对其进行验证。 This question包含一个示例。