using Microsoft.AspNet.Identity;
using System.Security.Cryptography;
public static void Main()
Console.WriteLine("Hello!");
var t=VerifyHashedPasswordIdentity("AO2HFYJlgA4TONpyYUafENQG9SsRe5F382Rq9c42hYlxiO9vdXTpfmYbMitTLyK44Q==","P@ssw0rd");
public static bool VerifyHashedPasswordIdentity(string hashedPassword, string password)
if (hashedPassword == null)
throw new ArgumentNullException("password");
byte[] src = Convert.FromBase64String(hashedPassword);
if ((src.Length != 0x31) || (src[0] != 0))
byte[] dst = new byte[0x10];
Buffer.BlockCopy(src, 1, dst, 0, 0x10);
byte[] buffer3 = new byte[0x20];
Buffer.BlockCopy(src, 0x11, buffer3, 0, 0x20);
using (Rfc2898DeriveBytes bytes = new Rfc2898DeriveBytes(password, dst, 0x3e8))
buffer4 = bytes.GetBytes(0x20);
return ByteArraysEqual(buffer3, buffer4);
public static bool ByteArraysEqual(byte[] firstHash, byte[] secondHash)
int _minHashLength = firstHash.Length <= secondHash.Length ? firstHash.Length : secondHash.Length;
var xor = firstHash.Length ^ secondHash.Length;
for (int i = 0; i < _minHashLength; i++)
xor |= firstHash[i] ^ secondHash[i];