Javascript和PHP加密/解密

3

基本上,我有一个负责登录信息的ajax表单,有没有办法在发送ajax之前加密密码,然后在php中解密它?

或者还有其他我应该考虑的方法吗?

非常感谢 :)

5个回答

5

在IT技术方面,没有必要使用JavaScript或PHP进行任何加密操作,因为适当的解决方案是使用SSL(HTTPS)。如今,您甚至可以免费获得在所有浏览器中都受信任的证书(链接),因此没有理由不使用SSL。

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


2
您可以使用RC4,因为我知道PHP和Javascript中都有其实现。然而,任何类型的加密都需要在客户端留下密钥(以便进行加密),这意味着任何可以访问您页面的人都可以获取密钥并解密它(从而使加密失去意义)。
如果您不需要知道密码,您最好在客户端对其进行哈希处理(然后在PHP中匹配哈希值),或者使用公共-私有密钥加密(如RSA),这样客户端就可以加密但不能解密。
关于哈希,请查看hash()Javascript的sha1
关于RSA,请参阅此博客文章:http://www.sematopia.com/2008/10/rsa-encrypting-in-javascript-and-decrypting-in-php/

2

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


0

你无法以安全的方式进行。你应该使用https。


0

你可以在JS和PHP中使用md5(password),然后比较加密后的密码。

由于用户名未加密,因此您可以在PHP中使用它从数据库中获取密码,然后对其进行加密。

最佳实践是:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接