using System.Security.Cryptography;
public static void Main()
string password = "hello world";
Rfc2898DeriveBytes rfc2898DeriveBytes = new Rfc2898DeriveBytes(password, 16, 1000);
var salt = rfc2898DeriveBytes.Salt;
var bytes = rfc2898DeriveBytes.GetBytes(32);
byte[] outputBytes = new byte[1 + 16 + 32];
Buffer.BlockCopy(salt, 0, outputBytes, 1, 16);
Buffer.BlockCopy(bytes, 0, outputBytes, 1 + 16, 32);
Convert.ToBase64String(outputBytes).Dump();
byte[] inArray = new byte[48];
Buffer.BlockCopy((Array) salt, 0, (Array) inArray, 0, 16);
Buffer.BlockCopy((Array) bytes, 0, (Array) inArray, 16, 32);
Convert.ToBase64String(inArray).Dump();
byte[] arrrr = new byte[49];
Buffer.BlockCopy((Array) salt, 0, (Array) arrrr, 1, 16);
Buffer.BlockCopy((Array) bytes, 0, (Array) arrrr, 17, 32);
Convert.ToBase64String(arrrr).Dump();
var cleaned = new byte[49];
cleaned[i] = inArray[i-1];
Convert.ToBase64String(cleaned).Dump();