【发布时间】:2020-04-16 18:53:10
【问题描述】:
我正在开发一个热点服务,使用 ASP.NET Core 构建一个 MVC 应用程序,我需要生成一个 6 位数(100000 到 999999)的号码作为用户连接和上网的密码使用权。该数字在数据库中必须是唯一的,并且会在一段时间后(一个月)被删除。
生成此唯一编号的最佳方法是什么?我也在使用实体框架,想知道这是否可以在某种程度上帮助我解决这个问题......
提前致谢!
【问题讨论】:
-
密码是唯一授予访问权限的东西吗?是否还需要用户名等来授予访问权限?拥有 6 位密码仅允许 900,000 种可能性,这使其容易受到暴力猜测攻击。您是否考虑过需要更长的密码或其他方式来验证您的热点用户?您是否考虑过一次性密码协议?另请参阅我写的关于生成 random unique identifiers 的内容。
-
最后,要自己生成密码,你应该使用加密RNG;请参阅我在existing APIs 上的部分。
-
EF 是一个 OR/映射器,它不关心生成随机数或任何东西。
标签: asp.net-mvc entity-framework asp.net-core random unique-key