C# 生成将在5秒后过期的6位数字

C# 生成将在5秒后过期的6位数字,c#,timestamp,C#,Timestamp,根据当前日期和时间,我可以生成6位数字吗?一个人让我用时间戳。请指导我如何根据当前时间戳生成6位数字。我需要生成这样的方式,稍后我可以检查数字是不是在5秒之前生成的。我需要知道我应该使用什么逻辑来反转逻辑,以找出数字是何时生成的。请帮助提供示例代码 如果我输入当前日期,比如DateTime.Now.ToString(“yyyymmddhhmmssfff”),我可以使用哪种加密技术生成数字 你需要考虑到,在10万次滴答声之后,你很有可能再次得到相同的数字 毫秒内有10000个滴答声。您可以这样做:

根据当前日期和时间,我可以生成6位数字吗?一个人让我用时间戳。请指导我如何根据当前时间戳生成6位数字。我需要生成这样的方式,稍后我可以检查数字是不是在5秒之前生成的。我需要知道我应该使用什么逻辑来反转逻辑,以找出数字是何时生成的。请帮助提供示例代码

如果我输入当前日期,比如
DateTime.Now.ToString(“yyyymmddhhmmssfff”)
,我可以使用哪种加密技术生成数字

你需要考虑到,在10万次滴答声之后,你很有可能再次得到相同的数字

毫秒内有10000个滴答声。

您可以这样做:

public static int GetTimestamp()
{
    // 10m ticks in a second, so 50m in 5 seconds
    const int ticksIn5Seconds = 50000000;
    return (int)((DateTime.Now.Ticks / ticksIn5Seconds) % 1000000);
}
这会得到一个一到六位数的数字,每五秒钟变化一次

编辑:


当然,这不是加密安全的:如果你观察一个数字,那么你就知道后面的数字是什么(因为它们每次只增加1)。如果不可预测性是一项要求,您需要一种不同的方法。

那么如何检查数字是否在5秒之前生成…我需要使用什么逻辑…plzz附带示例代码。可能重复的ur代码看起来很有希望,但我无法理解计算。为什么我要将DateTime.Now.Ticks除以50000000,将余数除以1000000。你能详细解释一下这个计算吗。感谢您的代码。
DateTime.Now.Ticks
是一个非常大的数字,以每秒10000000的速度增长。(整数)除以50000000得到的数字每五秒增加1。最后,
%1000000
会使该结果在超过9999999时换位为0,因此您的数字不会超过六位。
public static int GetTimestamp()
{
    // 10m ticks in a second, so 50m in 5 seconds
    const int ticksIn5Seconds = 50000000;
    return (int)((DateTime.Now.Ticks / ticksIn5Seconds) % 1000000);
}