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