Поскольку в комментариях, которые вы упомянули, вы скорее следите за тем, как хранится соль, я предполагаю, что у вас есть EF, указывающий на настройку Application A
членской БД, и сосредоточимся на этом бите хеширования. Я предполагаю, что вы используете UserManager
для управления своими паролями.
Если вы посмотрите, как пароли хранятся и проверены , вы заметите, что обе операции в конечном итоге полагаются на PasswordHasher
делать работу. Это зависимость, внедренная в ваш UserManager инфраструктурой и смотрящая на реализацию:
private static byte[] HashPasswordV3(
string password,
RandomNumberGenerator rng,
KeyDerivationPrf prf,
int iterCount,
int saltSize,
int numBytesRequested)
{
byte[] numArray1 = new byte[saltSize];
rng.GetBytes(numArray1);
byte[] numArray2 = Microsoft.AspNetCore.Cryptography.KeyDerivation.KeyDerivation.Pbkdf2(password, numArray1, prf, iterCount, numBytesRequested);
byte[] buffer = new byte[13 + numArray1.Length + numArray2.Length];
buffer[0] = (byte) 1;
PasswordHasher<TUser>.WriteNetworkByteOrder(buffer, 1, (uint) prf); // hash type
PasswordHasher<TUser>.WriteNetworkByteOrder(buffer, 5, (uint) iterCount); // number of iterations
PasswordHasher<TUser>.WriteNetworkByteOrder(buffer, 9, (uint) saltSize); // salt size (although not configurable in this implementation)
Buffer.BlockCopy((Array) numArray1, 0, (Array) buffer, 13, numArray1.Length); // salt goes here
Buffer.BlockCopy((Array) numArray2, 0, (Array) buffer, 13 + saltSize, numArray2.Length); // password hash goes here
return buffer; // this gets Base64-encoded upstream
}
кажется, что соль - это просто случайный 16-байтовый массив, который сохраняется вместе с hash
, hashing function
и number of iterations used
, поэтому хэши, созданные одним приложением, должны читаться другим без какой-либо дополнительной работы от вашего имени, если ОС , генерирующая и , одинакова.
Еще одна вещь, на которую следует обратить внимание, поскольку PasswordHasher
является зависимой вставкой , вы можете заменить ее собственной реализацией, если это будет необходимо. Будем надеяться, что поиск по PasswordHasher
предоставит вам достаточно контекста.