【问题标题】:Python TCP socket to send AES encrypted dictionaryPython TCP套接字发送AES加密字典
【发布时间】:2016-10-05 19:47:45
【问题描述】:

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

到目前为止,我正在考虑一个简单的TCP communication 并在发送字典之前使用AES 对其进行加密。

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

【问题讨论】:

    标签: python sockets dictionary encryption tcp


    【解决方案1】:

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

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

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

    【讨论】:

    • 非常广泛的答案,感谢您添加对 HMAC 的关注和建议!
    猜你喜欢
    • 1970-01-01
    • 2020-11-12
    • 1970-01-01
    • 2021-09-10
    • 2018-10-12
    • 2015-01-08
    • 2018-06-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多