用javascript加密字符串,可以用密码解密,可以'Don’不要轻易被粗暴地逼迫

Encrypt string in javascript, that can be decrypted with a password, that can't be easily brute-forced

本文关键字:字符串 加密 javascript 密码 可以 解密 Don      更新时间:2023-09-26

我希望能够做到这一点:

  1. 使用用户的密码在浏览器中加密字符串
  2. 将该字符串发送到我的服务器
  3. 允许任何人从我的服务器请求该字符串
  4. 该字符串可以由有密码的人解密
  5. 任何没有密码的都需要数百万美元/年才能解密字符串

我发现了这个使用AES加密和解密密码的线程。但是用我的数据测试它,解密函数在50毫秒内运行。仅在浏览器中,一天就有1728000次密码尝试。如果有人真的想破坏加密,我相信这在短时间内是可行的。

我的第二个直觉是,我应该把它放在服务器上的密码后面。您发送所需数据的ID和密码,它会发回您的加密数据。这解决了#3的问题,但I如果我真的想解密的话,仍然可以解密数据。

如果我这个服务器运行者不需要被信任,有没有办法做到这一点?假设用户可以信任/验证他们发送到服务器的数据,以及在浏览器中如何加密这些数据。

等等,我想我已经想通了。

用户将有一个密码,其哈希将被发送到服务器。用户只有在拥有密码哈希的情况下才能访问其数据。

数据将用类似AES的东西加密,但用于加密的密钥是他们密码的散列。突然间,每天1728000次尝试似乎很小,因为密码不会出现在字典或任何东西中。这将是一个非常长的无意义的字符串。

读到这篇文章的人能确认这是否是正确的方法吗?