在将加密消息从服务器传输到客户端时,我有点困惑如何以正确的方式使用 AES 和 HMAC(基于 SHA-256),反之亦然
如果以下方法错误,请纠正我:
- 从密钥文件中获取安全密钥(例如,我们建议使用 AES-256,并且我们已经有一个有效的 256 位长度密钥)
- 为 AES-256 生成随机 IV 以确保相同的纯文本将具有不同的加密输出。
- 使用纯文本和安全密钥计算 HMAC-SHA-256。(第一个问题:我应该使用 IV 进行 HMAC 计算吗?例如附加到安全密钥?)
- 使用 AES-256 加密纯文本。
- 为客户端编写消息如下:HMAC + IV+ ENCRYPTED_MESSAGE
最大的问题是:是否有可能不将 IV 发送给客户端,而是以相同的方式生成它并且仍然是加密安全的?或者也可以发送IV?
我最终生成了随机 IV,因为需要相同的纯文本以不同的加密结果结束。