生成6位数字,5秒后过期

本文关键字:过期 5秒 6位 数字 生成 | 更新日期: 2023-09-27 18:19:16

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

如果我输入当前日期,如DateTime.Now.ToString("yyyyMMddHHmmssffff"),我可以使用哪种加密技术来生成数字?

生成6位数字,5秒后过期

你可以这样做:

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到6位数的数字,每5秒改变一次。

编辑:

当然,这不是加密安全的:如果你观察一个数字,那么你知道后面的数字将是什么(因为它们每次只增加1)。

  // Get currect tick count
  string sTicks = DateTime.Now.Ticks.ToString(); 
  // get 5 least-significat digits
  string sNum = sTicks.Substring(sTicks.Length - 5, 5); 

你需要考虑到,在100000次滴答之后,有一个高概率,你会再次得到相同的数字。

一毫秒有10,000个滴答。