using System.Security.Cryptography;
public static void Main()
var password = "asdf123";
var legacyPasswordSalt = "MTIzNDU=";
var legacyPasswordHash = GenerateLegacyPasswordHash(password, legacyPasswordSalt);
var legacyPasswordHashNET6 = GenerateLegacyPasswordHashNET6(password, legacyPasswordSalt);
Console.WriteLine("Old : " + legacyPasswordHash);
Console.WriteLine("NET6: " + legacyPasswordHashNET6);
Console.WriteLine("\nAre equal: " + string.Equals(legacyPasswordHash, legacyPasswordHashNET6));
public static string GenerateLegacyPasswordHash(string password, string legacyPasswordSalt)
var passwordBytes = Encoding.Unicode.GetBytes(password);
var legacyPasswordSaltBytes = Convert.FromBase64String(legacyPasswordSalt);
var buffer = new byte[legacyPasswordSaltBytes.Length + passwordBytes.Length];
legacyPasswordSaltBytes.CopyTo(buffer, 0);
passwordBytes.CopyTo(buffer, legacyPasswordSaltBytes.Length);
var sha = new SHA1CryptoServiceProvider();
var result = sha.ComputeHash(buffer);
var legacyPasswordHash = Convert.ToBase64String(result);
return legacyPasswordHash;
public static string GenerateLegacyPasswordHashNET6(string password, string legacyPasswordSalt)
var passwordBytes = Encoding.Unicode.GetBytes(password);
var legacyPasswordSaltBytes = Convert.FromBase64String(legacyPasswordSalt);
var buffer = new byte[legacyPasswordSaltBytes.Length + passwordBytes.Length];
legacyPasswordSaltBytes.CopyTo(buffer, 0);
passwordBytes.CopyTo(buffer, legacyPasswordSaltBytes.Length);
var result = sha.ComputeHash(buffer);
var legacyPasswordHash = Convert.ToBase64String(result);
return legacyPasswordHash;