PhpMyAdmin,MySQL [duplicate]

smdnsysy  于 2023-10-20  发布在  PHP
关注(0)|答案(1)|浏览(120)

此问题已在此处有答案

How to decrypt hash stored by bcrypt(6个回答)
Difference between Hashing a Password and Encrypting it(9个回答)
bcrypt and randomly generated salts(1个答案)
上个月关门了。
varchar(191)可以解密吗?
当我从PhpMyAdmin访问MySql并希望从那里更改用户密码时,它会在密码旁边显示varchar(191),并且它是以某些类型的加密方式编写的,如$2y$10$cp1BPpWTBq8kMWvyOxXjduOPhT68YHEYfj37zDLOLLY10oimc5dQG
请问谁能给予我一个varchar(191)的例子?

7qhs6swi

7qhs6swi1#

在MySQL中,当你看到一个存储为varchar(191)的密码时,它看起来像这样:“$2y$10$cp1BPpWTBq8kMWvyOxXjduOPhT68YHEYfj37zDLOLLY10oimc5dQG”,很可能密码已经被散列,并可能使用bcrypt算法进行了加盐。这是在数据库中安全存储密码的常见做法。
您不能直接解密bcrypt哈希来检索原始密码。相反,您通常会将用户的输入(例如,当他们登录时)与存储的bcrypt散列进行比较,方法是使用相同的算法对他们的输入进行散列,并将结果散列与存储在数据库中的散列进行比较。如果它们匹配,则所提供的密码是正确的。
下面是一个如何使用PHP和password_verify()函数验证密码的示例:

// The stored hash in the database
$storedHash = "$2y$10$cp1BPpWTBq8kMWvyOxXjduOPhT68YHEYfj37zDLOLLY10oimc5dQG";

// User's input password
$userPassword = "user_input_password";

// Verify the password
if (password_verify($userPassword, $storedHash)) {
    echo "Password is correct!";
} else {
    echo "Password is incorrect!";
}

此代码将验证用户提供的密码是否与存储的bcrypt哈希匹配。如果它们匹配,则意味着用户提供了正确的密码。
重要的是要注意,bcrypt哈希是单向函数,这意味着它们不能被逆转以显示原始密码。这是一项安全功能,即使数据库遭到破坏,也有助于保护用户密码。

相关问题