简单的质询和响应密码

Simplistic Challenge and Response Password

我正在编写的程序要求用户在执行代码之前接受管理员的响应密码的质询,并且是动态的(不是相同的质询)。被质疑的信息需要简短,临时用户可以通过 phone.

阅读给其他人的内容

我一直在做研究,但那里的大部分信息都是针对更复杂的高安全性方法,在这种情况下不需要,因为我们不保护核信息或任何东西。我发现的其他事情非常简单,提供 x,然后给出 z 的答案,由 x + y = z 计算,但这太简单了。

我试图避免的解决方案:提供一个加密密钥,人们很难通过口头方式与另一个人交流以获得响应代码。

是否已经有任何解决方案可以提供此类挑战,或者我会被长串的随机字符卡住吗?

更新:

管理员将没有关于用户信息的信息。我只是在寻找一种简单的算法,如果存在的话,它不是一个简单的数学方程式。用户的挑战是通过管理员可以用来提供响应值的算法自动生成的。它可以是字母或数字,但必须小而简单。

假设您有一些要生成的信息 "password" 您可以组合所有信息,用 salt(即 SHA256)对其进行哈希处理并获得您认为有用的尽可能多的字节 - 比如 2-3字节产生短数。这样您就可以轻松地根据提供的数据重新计算相同的值来验证数据。

var codeByte = ComputeByteArraySha256(
      DateTime.Today + AdminName + UserName + SecretSalt)[13];
var codeText = codeByte.ToString();

根据实际的安全要求,几个字节的哈希值可能就足够了。

混合一些附加信息(例如数据库中最新版本的数据)可能使您能够使此类 tokens/have 一次性令牌过期。

通过众所周知的方式向用户提供此类代码(如按注册 e-mail/phone)是一种广泛使用的验证用户身份的方法。