如何显示哈希密码

问题描述 投票:1回答:5

我已经成功地将用户在我的网站上注册的密码进行了哈希处理,通过使用密码验证功能,我可以检查他们的原始密码和哈希密码,并允许他们登录,但在他们的我的账户页面上,我想让他们看到他们的原始密码,但在他们的我的账户页面上显示的是哈希密码。

php hash passwords
5个回答
6
投票

我在我的网站上成功地对用户注册的密码进行了哈希处理,并使用密码验证功能,可以将其原始密码与哈希后的密码进行核对并允许其登录。

好,那你就问吧

我想让他们看到自己的原始密码,但在他们的 "我的账户 "页面上显示的是哈希密码。有没有一个功能可以将哈希密码转换为 "我的账户 "页面上的原始密码?

不,你不能这样做,否则会扼杀整个哈希的目的。

所以换句话说,用户不能更新他们的密码,对不对,因为我也有一个更新信息的页面。

要想更新自己的密码,他们不需 看到 它,他们只需要 知道 它。


1
投票

一般情况下,哈希密码是无法找回的(这个要看哈希函数,安全哈希无法找回)。如果他们在两个网站上有相同的哈希值,他们可能有相同的密码,这取决于网站使用的哈希盐,什么方法等。


1
投票

没有办法获得哈希密码。如果你希望用户在确认旧密码的情况下更新密码,就把旧密码和新密码一起作为输入项,并将其哈希值与数据库中存储的值进行比较。如果旧密码的哈希值与数据库中的哈希值相同,则允许用户更新密码。否则提醒用户旧密码有误。


0
投票

md5sha1 是单向的,可能你用的是其中一种(只是猜测)。如果你需要两路,你可以直接用 mcrypt_encryptmcrypt_decrypt.

但是,我不建议你向用户显示密码:-。

对于更改密码:你可以简单地要求用户提供他们的旧密码和新密码,将其加密,并与存储在数据库中的加密密码进行匹配,如果他们匹配,则在数据库中为相应的用户更新新的加密密码。

对于忘记密码的用户:您可以为该用户生成一个令牌,并将其链接(重置密码)作为参数发送到他们所需的电子邮件地址,当他们使用该链接时,您将获得令牌来验证并在数据库中存储新的加密密码。


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

© www.soinside.com 2019 - 2024. All rights reserved.