Ответ 1

using System.Security.Cryptography;
...
using(RandomNumberGenerator rng = new RNGCryptoServiceProvider())
{
    byte[] tokenData = new byte[32];
    rng.GetBytes(tokenData);

    string token = Convert.ToBase64String(tokenData);
}

Ответ 2

Это зависит от того, что вы подразумеваете под быстрым...

Существует не очень быстрый безопасный случайный генератор. Если вы хотите быстро, вы должны использовать обычный случайный класс. Если вы хотите защитить, вы должны использовать случайный генератор в пространстве имен Cryptography, но это значительно медленнее. Вы просто не можете иметь оба.