Hi,
Ich bastle an einem kleinen Login-System auf Basis von C# TcpClient und TcpServer.
Bei der Registrierung wird ein Salt und das mit BCrypt gehashtes Passwort in die Datenbank gespeichert (das funktioniert).
Meine Encryption-Klasse sieht so aus:
|
C#-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
public class Encryption
{
public static string PasswordSalt(int length = 6)
{
string salt = BCrypt.Net.BCrypt.GenerateSalt(12);
salt = salt.Substring(0, length);
return salt;
}
public static string HashPassword(string password, string salt)
{
try
{
string hash = BCrypt.Net.BCrypt.HashPassword(password, salt);
return hash;
}
catch (Exception e)
{
return (string)null;
}
}
public static bool ValidatePassword(string password, string salt, string correcthash)
{
try
{
return BCrypt.Net.BCrypt.Verify(password, correcthash);
}
catch
{
return false;
}
}
}
|
Das Problem ist, dass die ValidatePassword-Methode immer False zurück gibt. Wenn ich das gleiche Password durch die HashPassword-Methode schickt, kommt immer ein anderer Hash raus.
Wo liegt mein Fehler?
Gruß