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