Я пишу программу шифрования и хочу иметь возможность использовать пароль для шифрования и дешифрования моего файла. Поэтому в настоящее время у меня есть пользователь, который вводит строковый пароль, передает его через sha256 и возвращает ключ и iv из него (половина хэша - ключ, а половина - IV). Я прочитал, что IV должен быть разным для каждого зашифрованного файла, так что я могу немного его изменить, но перед тем, как я это сделаю, я просто хотел посмотреть, был ли sha256 даже хорошим способом сделать это. Мой код выглядит следующим образом:
public Tuple<byte[],byte[]> Fetch_Password(string password)
{
byte[] hash = new byte[0];
using (SHA256 sha = SHA256.Create())
{
hash = sha.ComputeHash(Encoding.Default.GetBytes(password));
}
byte[] key = Get_key(hash);
byte[] iv = Get_iv(hash);
return Tuple.Create(key, iv);
}
Методы Get_key и Get_iv в приведенном выше коде в настоящее время просто разбивают хеш на две секции.