Поставщик членства Метод EncodePassword .NET 4.0 - PullRequest
2 голосов
/ 02 апреля 2011

Я пишу свой собственный пользовательский провайдер членства, но использую собственный метод EncodePassword у провайдеров членства, который показан ниже:

internal string EncodePassword(string pass, int passwordFormat, string salt)

{
if (passwordFormat == 0) // MembershipPasswordFormat.Clear
    return pass;

byte[] bIn = Encoding.Unicode.GetBytes(pass);
byte[] bSalt = Convert.FromBase64String(salt);
byte[] bAll = new byte[bSalt.Length + bIn.Length];
byte[] bRet = null;

Buffer.BlockCopy(bSalt, 0, bAll, 0, bSalt.Length);
Buffer.BlockCopy(bIn, 0, bAll, bSalt.Length, bIn.Length);
if (passwordFormat == 1)
{ // MembershipPasswordFormat.Hashed
    HashAlgorithm s = HashAlgorithm.Create( Membership.HashAlgorithmType );
    bRet = s.ComputeHash(bAll);
} else
{
    bRet = EncryptPassword( bAll );
}

return Convert.ToBase64String(bRet);
}

Теперь я знаю после нескольких часов охоты на это в .NET 4используется алгоритм HMACSHA256.Я понимаю, что мне нужен ключ для правильной работы алгоритма.

Мой вопрос: как это сделать?

Вставить ли ключ в файл конфигурации и ссылаться на него каким-либо образом?

Любая помощь будет оценена!

Спасибо.

1 Ответ

2 голосов
/ 25 июня 2011

Не используйте SHA !.Иди и скачай BCrypt.Net.SHA слишком быстро хеширует, что делает все, что зашифровано, легко перебором.BCrypt работает медленнее из-за настраиваемого рабочего фактора, поэтому, хотя пользователь и пытается использовать грубые 700-метровые ключи в секунду, он просто не может этого сделать.это:

private static readonly int BCRYPT_WORK_FACTOR = 10;
string hashedPassword = BCrypt.Net.BCrypt.HashPassword(account.HashedPassword, BCRYPT_WORK_FACTOR);

и для проверки пароля:

bool matched = BCrypt.Net.BCrypt.Verify(password, match.HashedPassword))

Я написал это немного более подробно здесь http://www.danharman.net/2011/06/25/encrypting-hashing-passwords-for-your-website/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...