生成6位数字,5秒后过期
本文关键字:过期 5秒 6位 数字 生成 | 更新日期: 2023-09-27 18:19:16
基于当前日期和时间,我可以生成6位数字吗?有人让我用时间戳。请指导我如何根据当前时间戳生成6位数字。我需要以这种方式生成这个,稍后我可以检查5秒之前是否生成了这个数字。我需要知道我应该使用什么逻辑来反转逻辑,以找出数字是何时生成的。请提供示例代码。
如果我输入当前日期,如DateTime.Now.ToString("yyyyMMddHHmmssffff")
,我可以使用哪种加密技术来生成数字?
你可以这样做:
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个滴答。