Diskuze: Dekódování hesla
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 6 zpráv z 6.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Ještě dodatek kódu pro úplnost
/// <summary>
/// First registration
/// </summary>
public void FirstRegistration()
{
var user = context.Users.Where(i => i.UserName == this.UserName).FirstOrDefault();
if (this.Password == this.ConfPassword)
{
String salt = CreateSalt(10);
String hashedpassword = GenerateSHA256Hash(this.Password, salt);
var _user = new User();
_user.UserName = UserName;
_user.HashPassword = hashedpassword;
_user.Salt = salt;
_user.Note = Note;
_user.RoleId = SelectedRole.RoleId;
Users.Add(_user);
Save();
RefreshUser();
MessageBox.Show("Registrace proběhla v pořádku!");
LoginPage();
}
else
{
MessageBox.Show("Neshodné zadání hesla!");
}
}
Možná si pleteš hashování a šifrování. Z hashe zpátky plain text nezískáš.
Z Hashe už to zpátky nejde. Pokud chceš jen kontrolovat správnost hesla,
musíš mít uloženo v DB to zahashované heslo a při přihlašování
provedeš stejnou proceduru (hashování) a pak jen ty hashe zkontroluješ,
jestli se shodují. Zobrazit původní heslo ale nejde...
P.S. Nemyslím si, že při registraci je třeba kontrolovat zadání
kontrolního hesla pomocí hashe, zbytečně si to komplikuješ. Stačí
porovnat ty zadané řetězce z textboxů
a ten salt se musi ukladat do DB taky. pro nejvesti bezpecnost je dobre ukladat si ten salt unikatni pro kazdeho uzivatele.
Zobrazeno 6 zpráv z 6.