c# - 随时间滴答生成随机加密密钥并将其存储在客户端和数据库服务器 Windows 应用程序表单 C#
问题描述
用于提供 Second Factor Authentication 的 Google Authenticator、Authy 和类似的身份验证应用程序都有一个时钟。
我不想使用相同的方法,即
- 为每个用户(非管理员)生成一个随机加密密钥
- 根据用户的 ID 将生成的每个密钥链接到用户,即(user1 ID = 1 RandomEncryptionKey = G3er@jkd83jasd 使用某种函数链接)
- 将加密密钥存储在服务器和客户端上,密钥将根据 DateTime 函数+ 5 秒刻度而更改
我怎么能这样做?
我找到了这个链接,但它确实帮助了我一个开始的地方!
有任何想法吗?
解决方案
正如@Damien_The_Unbeliever 在评论中指出的那样,您应该查看由 Internet 工程任务组定义的标准TOTP和底层算法HOTP 。
您可以在此处找到HOTP算法的完整定义: https ://datatracker.ietf.org/doc/html/rfc4226
这里还有一个对您的问题很有帮助的指南: https ://www.freecodecamp.org/news/how-time-based-one-time-passwords-work-and-why-you-should-use-them -in-your-app-fdd2b9ed43c3/
推荐阅读
- html - 如何使背景图像 (CSS) 具有响应性?
- reactjs - 带有 Netlify CMS 的 Gatsby 图像 - 字段“图像”不能有选择,因为类型“字符串”没有子字段
- sql - 尝试结合选择和更新
- typescript - 声明在编译时有效,但在运行 mocha 测试时无效
- python - KeyError: 'project' on Submitting JIra Ticket through Python
- javascript - jQuery函数多次运行
- css - css 和 razor - 使整个网格阻止 ActionLink
- git - 使新的 git 分支跟踪相同的远程分支
- netbeans-8 - 在 Netbeans 11 中未访问 Lombok Getter/Setter
- asp.net - 使用 ChangeToken.OnChange() 检测更改