в C# кажется, что Rfc2898DeriveBytes реализует его с SHA1, но я хочу попробовать использовать SHA512 для большей безопасности. Как я могу использовать SHA512 для PBKDF2 в С#?
Rfc2898DeriveBytes
теперь принимает HashAlgorithmName
в конструкторе, начиная с .NET Framework 4.7.2.
Для более старых версий .NET:
К сожалению, это всего лишь предел реализации Rfc2898DeriveBytes
, он не позволяет указать хеш-функцию. SHA512, вероятно, является излишним, и многие утверждают, что SHA1 все еще, вероятно, безопасен в использовании. Однако многие люди действительно используют SHA256. Вам придется найти другую реализацию. Microsoft создала еще одну библиотеку под названием CLR Security, которая расширяет пространство имен System.Security.Cryptography.
Одна из вещей, которые он делает, — это использование Microsoft CNG API. Он предлагает реализацию PBKDF2, которая поддерживает указание хеш-функции, включая SHA512. Вы можете найти его на Codeplex. Единственным недостатком этого является то, что он не будет работать на XP или Server 2003, поскольку CNG был представлен в Windows Vista / Server 2008.
Я читал о столкновении хэшей, но еще не понял, так какова правильная длина соли и хэша, чтобы обеспечить достойную безопасность?
Ваша соль должна быть довольно длинной. Хорошим примером может быть соль того же размера, что и выходные данные хэш-функции, поэтому с SHA512 вы должны использовать 64-байтовую соль. Как правило, ваша соль должна быть достаточно большой, чтобы ее нельзя было легко взломать. Это также должно быть случайным, а не какими-то «пользовательскими» данными, такими как имя пользователя.
person
vcsjones
schedule
11.12.2014