Чтобы преобразовать строку .net в базу 64, используя UTF8 в качестве базовой кодировки:
string base64 = Convert.ToBase64String(Encoding.UTF8.GetBytes(text));
И для обратного процесса:
string text = Encoding.UTF8.GetString(Convert.FromBase64String(base64));
Вполне возможно пропустить шаг UTF8. Однако UTF8 обычно приводит к меньшей полезной нагрузке, чем UTF16, и поэтому я бы рекомендовал использовать UTF8 в качестве базовой кодировки.
Я не уверен, что вы имеете в виду, когда говорите, что пользователь может вводить символы UTF8. .NET Framework использует UTF16 в качестве кодировки рабочей строки. Строки, которые вы используете в .net, всегда кодируются с помощью UTF16. Возможно, вы просто имеете в виду, что текст может содержать не-ASCII символы.