I tried this:
Console.WriteLine(Convert.ToBase64String(Encoding.UTF8.GetBytes("hi")));
Console.WriteLine(Convert.ToBase64String(Encoding.UTF8.GetBytes(Convert.ToBase64String(Encoding.UTF8.GetBytes("hi")))));
and I get different results for them, although I thought that it should be the same
In the second line you’re not inverting the conversion to Base64, just reapplying it.
You want to use Convert.FromBase64String and say: