代码之家  ›  专栏  ›  技术社区  ›  Steven Venham

如何创建处理难题

  •  0
  • Steven Venham  · 技术社区  · 7 年前

    我对我的登录和验证系统有一个想法,但我想知道这是正确的想法还是已经在其他地方实现了。

    为了尝试减轻一些攻击,在登录之前,id想向客户端提出一个挑战。所以我想向用户提出一个计算挑战。我需要以某种方式生成一个问题或某种代码,平均需要机器X秒来处理。答案是我可以快速计算和检查的。

    例如,我知道哈希/加密算法需要时间,也许我可以使用一个简单的加密算法,生成一些随机的短长度密码和长长度关键字。然后我用密码加密关键字,并将其发送给客户端。

    然后客户端必须随机猜测/检查密码,当它得到密码时,它会向我发送密钥。

    例子:

    Password:Foo
    Length: 3
    Answer: Bar
    Keyword:123456
    Output: encrypted(answer+keyword)->o3jubo3ibf32ib3o
    

    发送->o3jubo3ibf32ib3o,答案:Bar。

    然后,客户机处理这个问题,并尝试给出密码,猜测并检查前3个字母是否为bar。

    当它找到答案时,它会将关键字和密码发回给我进行检查。我检查关键字是否匹配,如果匹配,我继续,如果不匹配。我试着用他们使用的密码解密这个挑战,看看它的前3个字母是否与答案相等。如果他们给我的密码前3个字母不等于密码,我会将IP列入黑名单5分钟左右,然后切断连接。

    这看起来有用吗?

    是否已为此创建库?

    有c++中的示例可以看吗?

    这种方法的最佳加密方法是什么?

    0 回复  |  直到 7 年前
    推荐文章