【问题标题】:Javascript and PHP Encryption/DecryptionJavascript 和 PHP 加密/解密
【发布时间】:2011-08-09 10:07:04
【问题描述】:

基本上,我有一个带有登录信息的 ajax 表单,有什么方法可以在密码发送之前加密密码,然后在 php 中解密?

或者我应该如何看待它?

非常感谢:)

【问题讨论】:

    标签: php javascript encryption


    【解决方案1】:

    没有理由在 JavaScript 或 PHP 中进行任何加密,因为 适当的解决方案是使用 SSL (HTTPS)。 现在您甚至可以获得所有浏览器都信任的证书for free 所以没有理由不使用 SSL。

    如果由于某种原因您不能使用 SSL,您可以获取 RSA 的 JavaScript 实现,这样您就可以在本地对其进行加密,但只有您的服务器能够再次对其进行解密。

    【讨论】:

      【解决方案2】:

      您可以使用 RC4,因为我知道它在 PHP 和 Javascript 中的实现。但是,使用任何类型的加密,您都必须离开密钥客户端(以便它可以对其进行加密),这意味着任何有权访问您的页面的人都可以获取密钥并对其进行解密(从而打破这一点)。

      您最好在客户端对其进行哈希处理(然后在 PHP 中匹配哈希,如果您不需要知道密码),或者使用公私钥加密(如 RSA),以便客户端可以加密,但不能解密。

      对于散列,请查看 hash()sha1 for Javascript

      对于 RSA,请查看这篇博文 http://www.sematopia.com/2008/10/rsa-encrypting-in-javascript-and-decrypting-in-php/

      【讨论】:

        【解决方案3】:

        使用SSL certificate 并通过 HTTPS 从您的 AJAX 表单发送登录信息。

        【讨论】:

          【解决方案4】:

          你不能以一种安全的方式。你应该使用 https

          【讨论】:

            【解决方案5】:

            JS和PHP都可以md5(password),然后对比加密后的密码。

            由于用户名没有加密,你可以用它在PHP中从数据库中获取密码,然后加密。

            最好的方法是:

            • 生成uniqid,将其保存在$_SESSION['crypt_key'],并将其作为隐藏输入发送到ajax表单中;
            • 在发送之前使用md5(crypt_key + password)在JS中加密;
            • 在 PHP 中使用 md5($_SESSION['crypt_key'] . $password) 加密并比较它们。这样,每个请求都会传输一个不可预测的加密密码。

            【讨论】:

              猜你喜欢
              • 2015-02-24
              • 2014-02-26
              • 2010-10-11
              • 2011-09-30
              • 2013-02-12
              • 1970-01-01
              • 2021-04-13
              相关资源
              最近更新 更多