我可以使用什么逻辑来根据当前日期和时间生成6位数的随机数。假设我想生成一个6位数的随机数,有效期最长为5秒。 5秒后,如果有人将该随机数输入系统,那么系统会说它已过期。有一点我需要提一下,没有数据库交互。我不想生成随机数并将其存储在数据库表中。 5秒有效性逻辑将嵌入生成的随机数中,因此我可以稍后验证它是否在5秒之前生成。
我在另一个论坛上问了这个问题,他们给了我代码,根据当前的日期和时间生成6位数的随机数,如
var random = new Random(System.DateTime.Now.Millisecond);
int randomNumber = random.Next(1, 500000);
没关系?因为我不是高级开发人员。如果我可以使用上述逻辑生成6位数的随机数,那么以后如何以编程方式确定该数字是在5秒之前生成的。基本上我需要两个例程,用于根据当前日期生成6位数的随机数。时间和另一个例程将检查生成的数字是否在5秒之前生成。
请指导我的概念和代码。感谢
答案 0 :(得分:1)
您无法撤消随机数生成过程以确定何时生成数字,尤其是在您使用毫秒播种Random
时。
获取一个6位数的随机数:
int randomNumber = random.Next(0, 1000000);
答案 1 :(得分:1)
如果它是在这五秒钟内保持的相同进程,您可以将密钥存储在哈希表中,并验证它是否在哈希表中。还要在哈希表中保留密钥的创建时间,并定期清理该哈希表(删除过时的密钥和相关数据)。
当然,您需要“随机”或“加密”生成该密钥