One time key for authentication
General coding style


avoid using var because it obscures the datatypes.
use meaningful variable names.
when comparing ranges, put the thing being tested in the middle and keep both comparison operators the same.
always use the same value for UtcNow, because the clock is ticking.
document every function you write (1 or 2 lines of comments above each function)


Example:

// Returns true if this key value came from GetKey(), false otherwise.
public static bool IsKeyValid(long testKey)
{
    long k = GetKey();

    double allowedVariance = 0.00000000004;   // say what this is ...

    // You use of 'var' obscured the differing datatypes: k and testKey are long.
    double variance = k * allowedVariance;    

    return (k - variance &lt;= testKey &amp;&amp; testKey &lt;= k + variance);
}

// Returns a key based on the current time.
public static long GetKey()
{
    DateTime now = DateTime.UtcNow;

    // Explanation is called for here...
    long i = now.Ticks * 5;
    long d = (long)Math.Sqrt(Math.Ceiling(400 - (now.Day * Math.PI)));
    long k = (long)((Math.Round((Math.Sqrt(i) * Math.Pow(Math.PI + d, 3)) * Math.E - d)) * d) + now.Minute;

    return k;
}


I know nothing about encryption so cannot say whether there are built-in .NET functions which perform the same task, but there probably are.