首页 > 解决方案 > 随时间滴答生成随机加密密钥并将其存储在客户端和数据库服务器 Windows 应用程序表单 C#

问题描述

用于提供 Second Factor Authentication 的 Google Authenticator、Authy 和类似的身份验证应用程序都有一个时钟。

我不想使用相同的方法,即

  1. 为每个用户(非管理员)生成一个随机加密密钥
  2. 根据用户的 ID 将生成的每个密钥链接到用户,即(user1 ID = 1 RandomEncryptionKey = G3er@jkd83jasd 使用某种函数链接)
  3. 将加密密钥存储在服务器和客户端上,密钥将根据 DateTime 函数+ 5 秒刻度而更改

我怎么能这样做?

我找到了这个链接,但它确实帮助了我一个开始的地方!

有任何想法吗?

标签: c#databaseencryption

解决方案


正如@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/


推荐阅读