Javascript和PHP加密/解密

时间:2011-04-20 11:24:10

标签: php javascript encryption

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

或者我应该看看它的其他任何方式?

非常感谢:)

5 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分: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/

答案 2 :(得分:2)

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

您可以在JS和PHP中执行md5(password),然后比较加密密码。

由于用户名未加密,您可以使用它从PHP中获取DB中的密码,然后加密。

最好的方法是:

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