我正在使用来自其他服务器(不是我的服务器)的数据,我需要登录到此服务器 . 所以我需要知道每个用户帐户的密码 . 我需要通过HTTP请求将此密码发送到服务器(没问题) . 但服务器期望密码不安全 .
因此,如果密码是'123456',我必须发送带有数据的POST请求:
"username=user&password=123456"
我不能使用md5功能因为之后我无法取回密码所以我的问题是如何编码这个密码?是否存在一些常见的PHP函数?例如:
$securePassword = php_encode("123456", "mykey")
php_decode($securePassword, "mykey")
因为我只是不想存储到我的数据库“123456”
6 回答
使用
mcrypt_encrypt()
和mcrypt_decrypt()
了解更多信息SO POST
哈希的一点是你不能解密它 . 要检查是否有人输入了正确的密码,请对他们输入的内容进行哈希处理,并将其与数据库中密码的哈希值进行比较 . 如果匹配,则密码正确;否则,这是错的 . 此外,只要您使用SSL和一个不错的哈希算法,您应该是安全的 .
如果你有PHP> 5.5,你可以使用函数password_hash . 如果您的版本低于PHP 5.3.7,则应使用password compat .
您正在寻找的不是如何保护密码,而是如何保护密码的 transport . 您可以使用传输层安全性(也称为TLS又称SSL)执行此操作 .
也就是说,不建议以这种方式传输密码,并且应该设计出更好的机制 . 如果您加密或散列密码并传输密文,则不会提供任何保护,因为攻击者只会像您一样发送密文 .
您需要加密传输中的数据 . 在您的网站上获取SSL设置 .
看看下面的2个功能
http://www.php.net/manual/en/function.mcrypt-encrypt.php和http://www.php.net/manual/en/function.mcrypt-decrypt.php .
密码是经过哈希处理而不是加密的原因 . 您无法解密哈希 . 通常,惯例是执行以下操作:
Create Password
将新密码发送到服务器
哈希密码
将哈希存储在数据库中
Check Password
将密码发送到服务器
哈希密码
检查哈希值是否与数据库中存储的哈希值匹配
为此你应该使用像SHA256这样的东西: