Это код, который я использую для «хэширования» (или получения ключа , как он вызывается в PBKDF2 реализации стандарта PKCS) паролей строк с Rfc2898DeriveBytes класс, представленный в .NET:
int saltSize = 256;
int iterations = 1000;
int keySize = 20; // The parameter I'm not sure of
var deriveBytes = new Rfc2898DeriveBytes("mypassword", saltSize, iterations);
byte[] salt = deriveBytes.Salt;
byte[] key = deriveBytes.GetBytes(keySize);
Теперь я понимаю, что размер соли не имеет большого значения (если этого достаточно, чтобы случайные соли были уникальными), но как насчетразмер ключа?Обеспечивает ли более длинный ключ большую защиту от атак?
(Примечания:
1. Для меня здесь не важны вопросы производительности, очевидно, что более длинный ключ или более длинный ключ потребуют больше времени для GetBytes
для возврата значения.
2. Я хочу использовать этот «хеш» для хранения их в базе данных, а не для последующего использования в схеме шифрования)