我已经成功地将密码用户注册在我的网站上并使用密码验证功能,我可以检查他们的原始密码,并允许他们登录。但是在我的帐户页面上,我希望他们看到他们的原始密码,但它会在我的帐户页面中显示哈希密码。是否有一个函数可以将哈希密码转换为我的帐户页面上的原始密码?
答案 0 :(得分:3)
我已成功对用户在我的网站上注册密码并使用密码验证功能
进行了哈希
好,那你问
我希望他们查看原始密码,但会在我的帐户页面中显示哈希密码。是否有一个函数可以将哈希密码转换为我的帐户页面上的原始密码?
不,你不能这样做,或者它会杀死哈希的整个目的。
换句话说,用户无法更新密码吗?因为我也有更新信息页面
为了能够更新密码,他们不需要查看,他们只需要知道。
答案 1 :(得分:0)
一般无法检索散列密码(这取决于散列函数,无法检索安全散列)。如果它们在两个站点上具有相同的哈希值,则它们可以具有相同的密码,这取决于站点使用的哈希盐,什么方法等。
答案 2 :(得分:0)
无法获取哈希密码。如果您希望用户通过确认旧密码来更新密码,请将旧密码作为输入条目与新密码一起使用,并将其的哈希值与存储在数据库中的值进行比较。如果旧密码的哈希值与数据库中的哈希值相同,则允许用户更新密码。否则警告旧密码错误
答案 3 :(得分:0)
md5
和sha1
是一种方式,可能是您正在使用的其中一种方式(只是猜测)。如果您需要两种方式,只需使用mcrypt_encrypt
和mcrypt_decrypt
。
但是,我不建议您向用户显示密码: -
对于更改密码:您可以简单地询问用户他们的旧密码和新密码,加密它并与存储数据库中的加密密码匹配,如果匹配,则在数据库中为相应用户更新新加密密码。 / p>
对于忘记密码:您可以为该特定用户生成一个令牌,并将其作为参数发送给他们所需的电子邮件地址,当他们使用该链接时,您将获得令牌以进行验证,在您的数据库中存储新的加密密码。
答案 4 :(得分:0)
如果要在管理面板上查看密码,则无需对密码进行哈希处理。只需使用openssl_encypt()函数输入密码,然后再查看openssl_decypt()函数即可查看密码。
//您可以使用以下代码...
<?php
// Store a string into the variable which
// need to be Encrypted
$simple_string = "Welcome to Sidedevelopers";
// Display the original string
echo "Original String: " . $simple_string . "\n";
// Store cipher method
$ciphering = "BF-CBC";
// Use OpenSSl encryption method
$iv_length = openssl_cipher_iv_length($ciphering);
$options = 0;
// Use random_bytes() function which gives
// randomly 16 digit values
$encryption_iv = random_bytes($iv_length);
// Alternatively, we can use any 16 digit
// characters or numeric for iv
$encryption_key = openssl_digest(php_uname(), 'MD5', TRUE);
// Encryption of string process starts
$encryption = openssl_encrypt($simple_string, $ciphering,
$encryption_key, $options, $encryption_iv);
// Display the encrypted string
echo "Encrypted String: " . $encryption . "\n";
// Decryption of string process starts
// Used random_bytes() which gives randomly
// 16 digit values
$decryption_iv = random_bytes($iv_length);
// Store the decryption key
$decryption_key = openssl_digest(php_uname(), 'MD5', TRUE);
// Descrypt the string
$decryption = openssl_decrypt ($encryption, $ciphering,
$decryption_key, $options, $encryption_iv);
// Display the decrypted string
echo "Decrypted String: " . $decryption;
?>
输出:
原始字符串:欢迎使用Sidedevelopers
加密的字符串:hwB1K5NkfcIzkLTWQeQfHLNg5FlyX3PNUA ==
解密后的字符串:欢迎使用Sidedevelopers