【发布时间】:2019-10-17 22:20:13
【问题描述】:
我不确定我是否可以用 c# 解密密码,我存储在 mysql 数据库中。我使用 PASSWORD_BCRYPT 在 php 中加密了这些密码。 如果有可能我该怎么做?抱歉,我是初学者,在互联网上没有找到任何帮助。这是我用来加密密码的一段代码。
$passwort = $con->real_escape_string($_POST['passwort']);
$hash = password_hash($passwort, PASSWORD_BCRYPT);
在阅读了 cmets 之后,我尝试在 c# 中这样做,但它总是说密码错误
string email = textBox1.Text;
string password = textBox2.Text;
string passwordHash = BCrypt.Net.BCrypt.HashPassword(password);
MessageBox.Show(passwordHash);
MySqlConnection conn = new MySqlConnection("datasource=127.0.0.1;port=3306;username=root;password=CIAO6CIAO6;database=kontoprogramm");
int i = 0;
conn.Open();
MySqlCommand cmd = new MySqlCommand("select KLPPassword from tklassenlehrpersonen where KLPEmail = '" + email + "' and KLPPassword = '" + passwordHash + "'", conn);
cmd.ExecuteNonQuery();
DataTable dt = new DataTable();
MySqlDataAdapter da = new MySqlDataAdapter(cmd);
da.Fill(dt);
i = Convert.ToInt32(dt.Rows.Count.ToString());
if (i == 0)
{
MessageBox.Show("Falsche Email oder Kennwort!");
}
else
{
MessageBox.Show("Angemeldet!");
}
有人可以帮帮我吗?
【问题讨论】:
-
您通常不会解密密码。如果您想查看密码是否正确,您将加密您正在检查的密码,如果加密密码与存储的加密密码匹配,那么很好。
-
啊,谢谢。那么c#中的密码是否可以用php的PASSWORD_BCRYPT函数的相同哈希算法加密,这样我可以比较一下?
-
BCRYPT 不是加密方法,它是hashing function,因此无法解密。
-
对方法
real_escape_string的调用不正确。如果您试图使用它来防止 SQL 注入,那么您应该使用准备好的语句。 -
@Dharman 好的,谢谢。另外,如何将我在数据库中使用 php 中的 BCRYPT 函数创建的哈希字符串与用户在我的 c# 程序中输入的密码进行比较?