为了确保传输安全性,客户要求在客户端传输数据之前进行加密。起初考虑使用RSA非对称加密,但发现它对原始文本长度有限制。相反,使用AES对称加密没有长度限制,但使用固定密钥存在风险。是否存在一种解决方案能兼顾两者?思路是每个用户具有不同的密钥,而要验证用户身份则必须登录。因此,唯一安全获取密钥的时机是在登录时。为了保证用户名密码传输的安全性,可以使用RSA公钥加密后传输。所有客户端使用同一公钥也不成问题。登录成功后,服务端会生成token和AES密钥返回给客户端。但返回的AES密钥经过加密,加密密钥是“用户名+密码”。这样保证只有刚刚成功登录的客户端能解密出AES密钥。以后的传输会全部使用AES加密,服务端可以根据token从缓存获取AES密钥进行解密。
暂无评论