【问题标题】:Javascript encrypting password before form submit表单提交前的Javascript加密密码
【发布时间】:2012-11-16 12:16:58
【问题描述】:

有没有办法在 javascript 中进行双向加密?

【问题讨论】:

  • 这有什么作用?
  • 为什么要保护其中的一部分,而将另一部分(数据库)完全打开?
  • 我相信我的数据库是安全的,但是我不希望密码通过未加密的网络,一些窃听者可能能够从网络数据包中检索它。这就是为什么我需要在提交表单之前进行一些加密
  • 然后使用 SSL 来保证整个连接的安全。
  • “我相信我的数据库是安全的”——这是一个错误的假设。在某种程度上,一切都是可以妥协的。

标签: c# javascript


【解决方案1】:

我将纯密码文本存储在我的数据库中,而不是哈希值。

不要那样做。人们用他们的密码信任你。 protect them 是你的责任。

我希望在发送到我的服务器之前加密密码,我的服务器可以使用 C# 将其解密回纯文本。有人知道我的情况适合什么 javascript 加密吗?

没有。唯一适合保护在浏览器和服务器之间传输的数据的系统是 SSL。使用 HTTPS 方案。

【讨论】:

    【解决方案2】:

    我同意 Quentin 的观点,即以纯格式保存用户密码是个坏主意。

    为了安全的数据加密,您可以使用一些非对称加密算法,例如 RSA。您的公钥将保存在 javascript 端,C# 服务器将拥有私钥来使用 RSA 解密收到的密文。

    【讨论】:

      【解决方案3】:

      如果你的服务器可以将密码解密为纯文本,那么坏人也可以,

      您应该将密码以纯文本形式发送到服务器,然后将其转换为常规格式,例如md5()sha1(),然后按原样将其存储在您的数据库中。

      然后当用户想要登录时,将输入的密码加密并与之前存储的密码进行比较。

      如果你想保护从客户端到服务器的数据传输,你应该使用 https 来确保数据不会被截获。

      祝你好运

      【讨论】:

        【解决方案4】:

        在我个人看来,使用 Javascript 进行加密的最佳方式是使用 SHA-1。不要使用 MD5 这是最糟糕的(太容易解密)。你可以使用这个库:http://pajhome.org.uk/crypt/md5/sha1.html

        并以这种方式使用它:

        var encrypted_password = hex_sha512(plain_password);
        

        Javascript 的缺点是添加密码盐 (http://en.wikipedia.org/wiki/Salt_(cryptography)) 会毫无头绪,因为如果不让每个人都获得任何人的盐,他们就无法将其提供给浏览器(否则你无法加密密码)。

        出于这个特定原因,最安全的仍然是在服务器端使用 HTTPS 进行加密,否则这个库将很容易完成这项工作。

        【讨论】:

        • 这是单向哈希,不是加密。
        猜你喜欢
        • 2012-08-13
        • 1970-01-01
        • 2020-11-30
        • 2016-05-26
        • 2012-08-22
        • 2015-03-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多