我对登录和验证系统有一个想法,但是我想知道它是否正确,或者是否已经在其他地方实现。
要尝试缓解某些攻击,请在登录ID之前向客户端提出挑战。因此,我正在考虑向用户提出计算挑战。我需要以某种方式产生问题或某种类型的代码,这些代码或代码平均需要X秒钟的机器处理时间。有了答案,我便可以快速计算和检查。
例如,我知道哈希/加密算法需要时间,也许我可以使用简单的加密算法并生成一些随机的短长度密码和长长度的关键字。然后,我用密码对关键字进行加密,然后将其发送给客户端。
然后客户端必须随机猜测/检查密码,并在获得密码后将其发送给我。
示例:
Password:Foo
Length: 3
Answer: Bar
Keyword:123456
Output: encrypted(answer+keyword)->o3jubo3ibf32ib3o
SEND-> o3jubo3ibf32ib3o,答案:Bar。
然后客户端进行处理,并尝试输入密码,猜测并检查前3个字母是否等于bar。
找到答案后,它会给我发回一个关键字和密码以供检查。我检查关键字是否匹配,是否匹配,是否匹配。我尝试使用他们使用的密码解密挑战,以查看挑战的前3个字母是否等于答案。如果他们给我提供的密码的前三个字母不等于密码,则我将IP列入黑名单约5分钟,然后切断连接。
这看起来可行吗?
已经为此创建了一个库吗?
我可以看看c ++中的示例吗?
这种方法最好的加密方法是什么?