Trzymanie zhashowanego hasła w bazie

0

Witam was,

Chciałbym się zapytać czy taki sposób trzymania/dodawania hasła do bazy jest właściwy, i dlaczego powinienem go zmienić:
Pseudokod:

public void AddPasswordToBase(User user)
{
            string salt = System.IO.Path.GetRandomFileName();

            byte[] buff = System.Security.Cryptography.SHA256.Create().ComputeHash(System.Text.Encoding.UTF8.GetBytes(user.password + salt));

            StringBuilder hash = null;

            foreach (byte buf in buff)
            {
                hash.Append(buf.ToString("x2"));
            }

            SendToBase(user.id,hash.ToString(),salt);

} 
0

właściwy pod jakim względem?

0

Zły jest prawdopodobnie dlatego, że zapisujesz salt, a to raczej wg mnie nie ma sensu. Salt zazwyczaj robi się stałą na cały program i nie ma sensu jej zapisywać gdziekolwiek, może być stałą. Do tego warto kolumne w przypadku sha256 zrobić char[64]

0

Oczywiscie, ze doklejenie soli do hasłi to dobry pomysł. Wydobycie jej z programu, to zazwyczaj zaden problem, a majac sol i pokaźna ilość haseł, to swietny material do kryptoanalizy - wiec generowanie indywidualnej soli dla kazdego hasla jest duzo lepszym pomyslem.

0

dokładnie - sól może być jawna (i tak gdzieś umieszczona musi być) ale stała dla wszystkich haseł ułatwia przeprowadzenie ataku „rainbow tables”.

0

się tak zastanawiam jakby jako sól traktować np md5 hasła - czyli do bazy zapisujemy SHA256(Passs + MD5(Pass)) - wtedy odpada zapisywanie soli dla każdego hasła

1 użytkowników online, w tym zalogowanych: 0, gości: 1