在上传到服务器之前,我使用CryptoJ对客户端的文件进行加密。加密和解密是有效的,但我的问题是这有多安全。在我的javascript中,我将'secret passphrase‘作为参数传递给了encrypt函数。我用来解密的也是相同的口令。那么,如果有人可以获得这个“秘密密码”,他们就不能很容易地解密数据吗?
Crytpjs:
var encrypted = CryptoJS.AES.encrypt("Message", "Secret Passphrase");
var decrypted = CryptoJS.AES.decrypt(encrypted, "Secret Passphrase");发布于 2017-01-13 04:54:47
如果您的要求是将上传的文件加密,但对服务器是可见的,那么您实际上应该只使用TLS。没有理由使用其他任何东西。
如果您的要求是对上传的文件进行加密,使服务器无法对其进行解密,则只需向用户索要密码,应用PBKDF2,并将结果用作密钥。
如果你打算保留你当前的代码,有一些东西你应该改变。目前,看起来您使用的是ECB模式(您没有提供静脉注射)。ECB模式不安全,不应使用。此外,您还需要一种方法来确保数据在传输过程中没有被更改。您应该应用HMAC并将其附加到末尾。
发布于 2017-01-13 02:34:11
AES是一种对称加密算法。这意味着用于加密和解密的密钥(秘密口令)是相同的。
因此,它的安全性主要依赖于保持密钥的安全。如果有人获得了密钥,他们将能够解密任何使用该密码加密的内容。
我通常建议,如果要共享加密数据,则通过一个渠道(电子邮件或云服务器)共享数据,并通过不同的渠道(whatsapp、电话等)发送密钥。
发布于 2017-02-04 05:28:31
使用Javascript obfuscation解析了。这是一种巧妙的屏蔽脚本内容的方法。
https://stackoverflow.com/questions/41620374
复制相似问题