我在上传到服务器之前使用CryptoJs来加密客户端上的文件。加密和解密是有效的,但我的问题是这有多安全。在我的javascript中,我传递了秘密密码'作为加密函数的参数。我用于解密的所有内容也是相同的密码。因此,如果有人能够掌握这个秘密密码短语,他们是否可以轻松解密数据?
Crytpjs:
var encrypted = CryptoJS.AES.encrypt("Message", "Secret Passphrase");
var decrypted = CryptoJS.AES.decrypt(encrypted, "Secret Passphrase");
答案 0 :(得分:2)
如果您要求加密上传文件但服务器可见,那么您应该只使用TLS。没有理由使用其他任何东西。
如果您要求对上传的文件进行加密,即使服务器无法对其进行解密,也只需要求用户输入密码,应用PBKDF2,并将结果用作密钥。
如果您要保留当前的代码,那么您应该更改一些内容。目前,您似乎正在使用ECB模式(您不提供IV)。 ECB模式不安全,不应使用。此外,您需要一种方法来确保数据在传输过程中未被更改。您应该申请HMAC并将其附加到最后。
答案 1 :(得分:0)
AES是一种加密的对称算法。这意味着用于加密和解密的密钥(秘密密码)是相同的。
因此,它的安全主要依赖于保持密钥安全。如果有人获得密钥,他们将能够解密使用该密码加密的任何内容。
我通常建议,如果要共享加密数据,则通过一个频道(电子邮件或云服务器)共享数据,并通过不同的频道(whatsapp,电话等)发送密钥。< / p>
答案 2 :(得分:-1)
已解决。这是掩盖脚本内容的一种巧妙方法。