JS-C#双AES加密

时间:2015-05-28 15:54:33

标签: javascript c# encryption cryptography aes

我想因某些原因避免使用SSL, 虽然,我希望尽可能保证会话安全(所以我决定对请求进行双重加密 - JS方面和C#方面) 我提出了一个可能适合我的解决方案:

  1. 使用特定密钥和IV(AES)
  2. 加密JS中的请求
  3. 将请求发送到服务器。
  4. 服务器上的
  5. - 使用不同的密钥(AES)
  6. 加密请求
  7. 将回复发送回客户端。
  8. 客户端上的
  9. - 使用第一个密钥解密响应。
  10. 将请求发送到服务器。
  11. 服务器上的
  12. - 使用第二个密钥解密请求。
  13. 现在,我不是那么熟悉加密。 当我在服务器和客户端上使用相同的密钥时(可能是因为使用了相同的密钥) 当我使用不同的密钥时,我无法解密客户端上的双重加密消息。

    如何用我当前的算法克服这个问题?可以这样做吗? 如果没有,是否有不同的方法来模拟这个?

    谢谢你的头脑。 (如果需要,可提供代码)

1 个答案:

答案 0 :(得分:0)

对于大多数加密算法,用于加密和解密多级加密的密钥序列必须完全相反,即如果使用序列“密钥A” - “密钥B”进行加密,则必须使用“密钥B” “ - ”键A“用于解密。

您尝试使用“密钥客户端” - “密钥服务器”序列进行加密,并使用相同的(a.o.t.)反向序列进行解密,这将无效。

握手加密密钥的好方法是

  • 双向交换随机会话盐
  • 使用重放安全的内容(例如经过验证的时间戳)作为会话盐的一部分
  • 从会话盐和共享密钥(例如用户的盐渍密码哈希)创建一组哈希值
  • 将这些哈希用作IV和Key