首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >传递CryptoJS AES加密密钥的静态值安全吗?

传递CryptoJS AES加密密钥的静态值安全吗?
EN

Stack Overflow用户
提问于 2019-05-09 11:36:38
回答 1查看 1.1K关注 0票数 0

我想用加密js AES加密来加密我所有的表单数据。像below.Kindly建议的那样,将加密密钥值保留在客户端好吗?

代码语言:javascript
复制
var key = CryptoJS.enc.Utf8.parse("234234234DFDFDF343434DFDFDF")
      , iv = CryptoJS.enc.Utf8.parse("234234324234324")
      , data = CryptoJS.enc.Utf8.parse(str)
      , encryptedData = CryptoJS.AES.encrypt(data, key, {
        iv: iv,
        mode: CryptoJS.mode.CBC,
        padding: CryptoJS.pad.Pkcs7
    });
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-10 12:59:33

不,这通常不安全。

首先,你错误地陈述了你的目标。AES加密不是目标,而是达到目的的手段。您想要做的是将表单数据保密。表单数据在密码术语中称为“消息”。

如果需要将消息发送到服务器,然后让服务器具有解密形式,则需要传输安全性。最好用TLS来做这个。通常,JavaScript没有任何方法来创建与服务器的信任关系(您的浏览器使用它的证书存储区,其中包含可信的证书)。因此,在这种情况下,您不能依赖JavaScript安全性。

有时,您希望防止前端解密消息。在这种情况下,您可以通过安全通道发送公钥,例如RSA公钥。然后,您可以使用RSA和AES (混合加密)加密表单数据。您的后端将能够解密消息。但是,如果前端发送错误的密钥,则此方案仍然失败,因为消息将使用来自另一方的公钥加密。因此,这假设前端软件不可能轻易被黑客攻击(或者完全被另一台服务器所取代,从而破坏流量)。

即使您可以使用可信的AES密钥,那么使用CBC进行传输模式安全肯定会启用明文或填充oracle攻击。你太缺乏密码技术的经验了。使用TLS,这就足够困难了(为了安全起见,使用它相对容易)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56058546

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档