如何将HMAC与AES结合用于(python)客户端 - 服务器信使?

时间:2017-09-11 02:31:51

标签: python encryption client-server aes hmac

所以我正在尝试编写一个小的加密命令行IM messenger,它接受两个键作为args。我不确定这两个键是如何一起工作的,或者是为了什么。我试图一起使用HMAC和AES但不确定如何。 请注意,这仅用于教育目的,我不打算尝试在其他任何地方使用它。我很难理解,任何建议或解释都会非常感激。我有一个工作的IM信使已经启动并运行,我只需要弄清楚HMAC / AES /密钥。

谢谢大家,        〜麦迪

1 个答案:

答案 0 :(得分:2)

您应该做的是使用 Encrypt-Then-MAC 范例。

这意味着,您首先使用第一个密钥来使用AES加密消息。 然后,使用第二个密钥作为HMAC-SHA256功能的验证密钥,以验证密文(加密函数的输出)。然后连接密文和HMAC输出(称为标记)并通过线路传输。

收到此类消息后,您将从密文重新标记该标记,并将其与转移的标记进行比较。如果有效,您可以解密密文。

最后注意事项:您实际上不需要使用单独的键作为输入参数。如果可以提供一个主密钥,而不是使用它来使用密钥派生函数(如HKDF)派生到单独的加密和验证密钥。