Соль членства ASP.NET?

Никакой :

2.4.1. Строка и литералы Байтов

... Без обиняков: Оба типа литералов могут быть включены в соответствие одинарным кавычкам (') или двойные кавычки ("). Они могут также быть включены в соответствие группам из трех одинарных или двойных кавычек (они обычно упоминаются как трижды заключенные в кавычки строки). Символ (\) обратной косой черты привык к символам ESC, которые иначе имеют особое значение, такое как новая строка, сама обратная косая черта или символ кавычки...

22
задан Owen Blacker 14 August 2014 в 09:20
поделиться

2 ответа

Какой алгоритм хеширования по умолчанию, который использует членство в ASP.NET? хорошо обсуждает их алгоритм по умолчанию.

Надеюсь, это поможет!

Править- Ответ, который я имел в виду, - это код в верхнем сообщении,

   public string EncodePassword(string pass, string salt)
    {
        byte[] bytes = Encoding.Unicode.GetBytes(pass);
        //byte[] src = Encoding.Unicode.GetBytes(salt); Corrected 5/15/2013
        byte[] src = Convert.FromBase64String(salt); 
        byte[] dst = new byte[src.Length + bytes.Length];
        Buffer.BlockCopy(src, 0, dst, 0, src.Length);
        Buffer.BlockCopy(bytes, 0, dst, src.Length, bytes.Length);
        HashAlgorithm algorithm = HashAlgorithm.Create("SHA1");
        byte[] inArray = algorithm.ComputeHash(dst);
        return Convert.ToBase64String(inArray);
    } 

Они объединяют Unicode Salt + Pass с помощью BlockCopy

- В ответ на ваш вопрос:

Оба алгоритма необходимы и выполняют разные роли .. .

RNG Crypto используется для генерации соли. По сути, это длинная строка случайных данных. Он создается и сохраняется для каждого пользователя. Обычно это делается при создании пользователя или изменении пароля.

BlockCopy - это всего лишь метод, который они используют для объединения соли с паролем. Приведенный выше код по существу соответствует соли + пароль.

Вы не сможете воссоздать значение соли, так как оно полностью случайное. Однако фреймворк сохраняет его для каждого пользователя.

Объединение соли с паролем и его хеширование с использованием описанной выше техники позволит вам проверять пароли пользователей, используя хешированное значение, сохраненное платформой.

Думаю, мы оба читаем ваш вопрос по-разному. Код, который я опубликовал, не будет генерировать вашу соль, но он позволит вам использовать его таким образом, который совместим с членством в ASP.NET.

Извините, мое объяснение не самое лучшее - это ответ на ваш вопрос?

20
ответ дан 29 November 2019 в 04:44
поделиться

Вот один из способов сделать это. Соль - это просто случайное число, вы можете использовать класс RNGCryptoServiceProvider в библиотеке фреймворка, чтобы получить хорошее случайное число для использования в качестве соли

private const int ITERATIONS = 10000;
private const int SALT_SIZE = 32;
private const int HASH_SIZE = 32;

public void SaltAndHashPassword(string password, out byte[] salt,
  out byte[] hash)
{
  Rfc2898DeriveBytes rdb = new Rfc2898DeriveBytes(
    password,
    SALT_SIZE,
    ITERATIONS);

  salt = rdb.Salt;
  hash = rdb.GetBytes(HASH_SIZE);
}
1
ответ дан 29 November 2019 в 04:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: