发送秘密密码' (key / iv)使用CryptoJS时

时间:2017-01-12 18:26:26

标签: javascript encryption cryptography cryptojs

我在上传到服务器之前使用CryptoJs来加密客户端上的文件。加密和解密是有效的,但我的问题是这有多安全。在我的javascript中,我传递了秘密密码'作为加密函数的参数。我用于解密的所有内容也是相同的密码。因此,如果有人能够掌握这个秘密密码短语,他们是否可以轻松解密数据?

Crytpjs:

var encrypted = CryptoJS.AES.encrypt("Message", "Secret Passphrase");
var decrypted = CryptoJS.AES.decrypt(encrypted, "Secret Passphrase");

3 个答案:

答案 0 :(得分:2)

如果您要求加密上传文件但服务器可见,那么您应该只使用TLS。没有理由使用其他任何东西。

如果您要求对上传的文件进行加密,即使服务器无法对其进行解密,也只需要求用户输入密码,应用PBKDF2,并将结果用作密钥。

如果您要保留当前的代码,那么您应该更改一些内容。目前,您似乎正在使用ECB模式(您不提供IV)。 ECB模式不安全,不应使用。此外,您需要一种方法来确保数据在传输过程中未被更改。您应该申请HMAC并将其附加到最后。

答案 1 :(得分:0)

AES是一种加密的对称算法。这意味着用于加密和解密的密钥(秘密密码)是相同的。

因此,它的安全主要依赖于保持密钥安全。如果有人获得密钥,他们将能够解密使用该密码加密的任何内容。

我通常建议,如果要共享加密数据,则通过一个频道(电子邮件或云服务器)共享数据,并通过不同的频道(whatsapp,电话等)发送密钥。< / p>

答案 2 :(得分:-1)

使用Javascript obfuscation

已解决。这是掩盖脚本内容的一种巧妙方法。