好吧,故事是这样的:
我马上就要结婚了,我想创建一个网站(或应用程序)。 显然,我希望只有客人可以访问它。
所以我在考虑一个需要安全代码才能注册的系统。 问题是我不相信任何人不会对代码保持沉默,所以我正在考虑为每对受邀人(或家庭)提供不同的代码 .
在注册表单上,我会验证输入的代码是否尚未被使用。
但由于我不知道谁会注册该应用程序,而且我真的没有时间手动注册每位客人,所以我不会有一个数据库,向谁提供了哪些代码 信息。
所以,我需要一种算法来生成随机安全代码,以及反转代码,以检查给定的是否string 是一个验证安全码
我需要算法足够复杂,这样人们就无法猜到他们收到的代码背后有什么魔力。 (我知道,感觉很偏执)
生成的安全码应该很简单,比如6到8个字符(数字、大小写字母的混合)
主要问题是我不知道如何执行可靠的系统来生成和验证安全代码。
我觉得我应该在服务器端存储一个 key ,这是生成代码所必需的,如果给定的字符串是有效代码,我将不得不找回它.
假设 secret
是我的私钥。
生成算法类似于 secret + whatever = generated code
(其中 + whatever
操作仍有待定义)。
但是我怎样才能检查给定的字符串呢? string - 随便 =? secret
将是解决方案(其中 - whatever
是 + whatever
的反向操作)。
嗯,我实际上不知道whatever
可能(或应该)是什么。
您有什么建议或指导吗?
对于技术部分,我可能会用 JS(使用 NodeJS 服务器)编写代码。 但是当我谈论安全代码生成的概念时,任何伪代码都可以完成这项工作。
最佳答案
生成此人的电子邮件地址(大写)的哈希值,并将代码设为前 n 个字符。因此,举例来说,如果您的电子邮件地址是 TOUPYE@GMAIL.COM,那么 SHA-256 哈希将是:038122aedbf777b8c7c3aaed14ae7c08249a9d47f82f4455a0d667cacc57d383
因此您的代码将是“038122”。为每个人/家庭生成一个代码列表。如果某人没有电子邮件地址,请使用电话号码。如果他们没有电话,请使用他们的地址。
关于algorithm - 安全码生成算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30375379/