一种防机器人识别的验证码生成器

Author Avatar
白日鸡生蛋 2月2日
  • 在其它设备中阅读本文章

重要提醒
原 Hash 算法已被替换为 MD5 算法,详见:重要提醒:验证码生成器的哈希算法存在安全漏洞,已替换为 MD5 算法

简介
现如今,普通的验证码已经难不倒机器人了,例如基于 Python 下的 ddddocr 库就可以通过去干扰、ocr 识别等步骤,可以识别出各类图片验证码。于是,我开发了一个验证码生成器,可有效过滤机器人。经测试,ddddocr 库完全无法识别此验证码生成器生成的验证码。
参见:ddddocr 库的用法

使用
请求链接:https://www. 千里目.top/vchttps://www.qianlimu.tk/vc
发送请求后会跳转至~/vc/答案的十六进制哈希值,页面内仅包含一张 200*100 的验证码图片。

验证
对用户输入的验证码字符串求哈希值,转换成十六进制,与链接中的答案的哈希值对比,若一致则验证成功。
本系统用到的哈希算法:

s[0]*63^(n-1) + s[1]*63^(n-2) + ... + s[n-1]

其中 s 是待计算哈希值的字符串,n 是字符串长度,s[m] 是字符串 s 中第 m + 1 个字符的 ASCII 码。
具体代码:

    public static int hashCode(String s) {
        int hash = 0;
        char val[] = s.toCharArray();
        int len = s.length();
        for (int i = 0; i < len; i++) {
            hash = 63 * hash + val[i];
        }
        return hash;
    }