The format
The hash is Base64 of: one format byte; for version 3, the PRF (0 = HMAC-SHA1, 1 = HMAC-SHA256, 2 = HMAC-SHA512), the iteration count and the salt length as big-endian 32-bit numbers; then the salt and the subkey, which is the PBKDF2 output. Version 2 is one zero byte, a 16-byte salt and a 32-byte subkey from HMAC-SHA1 with 1,000 iterations.
Defaults by version
ASP.NET Core Identity up to .NET 6 wrote HMAC-SHA256 with 10,000 iterations; .NET 7 and later write HMAC-SHA512 with 100,000. Old hashes keep working: VerifyHashedPassword returns SuccessRehashNeeded for them (and for any hash with a weaker PRF or fewer iterations than configured), and UserManager then stores a new hash at the next sign-in. To raise the count: builder.Services.Configure<PasswordHasherOptions>(o => o.IterationCount = 210_000);.
FAQ
What algorithm does ASP.NET Core Identity use for passwords?
PBKDF2. Since .NET 7 with HMAC-SHA512 and 100,000 iterations, a 16-byte salt and a 32-byte subkey; before that HMAC-SHA256 with 10,000 iterations.
Can I decrypt an Identity password hash?
No. It is a one-way hash. You can only check a password against it, which this page does in your browser.
What does SuccessRehashNeeded mean?
The password is correct, but the hash was made with older settings (version 2 format, a weaker PRF, or fewer iterations). UserManager replaces it with a new hash at sign-in.
Can I import users with hashes from another system?
If they are PBKDF2 you can build Identity version 3 hashes from their salt, iterations and subkey; otherwise implement IPasswordHasher<TUser> to verify the old format and rehash on first sign-in.