我正在开发一个项目,用户可以访问服务器并向服务器发送命令。然后,服务器将发回信息/结果。发送到服务器的命令以及从服务器接收的信息将在AES 128中加密。
AES密钥将来自密码。密码可以是任意长度,因此密钥将从密码派生。还将产生IV和盐。
我唯一的问题是每次服务器和客户端的IV,盐和密钥都不同。如何确保密钥相同,以便我可以成功加密和解密双方的数据?
答案 0 :(得分:1)
在加密开始之前必须共享salt和IV。
他们不需要保守秘密,但每次会议都应该保持新鲜。
如果两端的salt和(共享密钥)密码相同,则派生的AES密钥将相同。
IV可以由加密方选择并在加密数据之前发送(以明文形式)。这样收件人就可以初始化AES进行加密。