Важность размера ключа в реализации Rfc2898DeriveBytes (PBKDF2)

Это код, который я использую для «хеширования» (или получения ключа , как это называется в 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. Я хочу использовать этот «хэш» для хранения их в базе данных, а не использовать их впоследствии в схеме шифрования)

8
задан Otiel 10 November 2011 в 12:43
поделиться