在平时,我们登录一些网站或者软件时经常会让我们填写验证码,通过输入验证码功能可以防止:恶意破解密码、刷票、论坛灌水,有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试,实际上用验证码是现在很多网站通行的方式,下面我们利用一个比较简易的方式实现这个功能。
我们制作一个简单的四位验证码验证程序,程序首先生成一个随机验证码,然后用户输入验证码进行验证,输入字母时可以不区分大小写,输入正确则成功,若输入错误会提示重新输入,若超过三次错误则会重新生成一个验证码,直到你输入成功为止,下面为完整代码:
public static void main(String[] args) {
// 定义循环判断
boolean flag = true;
while (flag) {
// 验证成功时自动退出,未验证成功时一直验证
makeNum();
}
}
// 产生验证码方法
public static void makeNum() {
String str1 = "abcdefghijklmnopqrstuvwxyz";
String str2 = "0123456789";
// 小写字母数组
char[] arr1 = str1.toCharArray();
// 大写字母数组
char[] arr2 = str1.toUpperCase().toCharArray();
// 数字数组
char[] arr3 = str2.toCharArray();
// 生成的随机数为数组的下标
// 设四位验证码第一位和第四位是小写字母,第二位是大写字母,第三位是数字
int first = new Random().nextInt(arr1.length);
int second = new Random().nextInt(arr2.length);
int third = new Random().nextInt(arr3.length);
int fourth = new Random().nextInt(arr1.length);
// 定义一个可变字符串拼接四个字符
StringBuffer out = new StringBuffer();
out.append(arr1[first]);
out.append(arr2[second]);
out.append(arr3[third]);
out.append(arr1[fourth]);
// 因为StringBuffer类没有转化大小写方法,所以还要把可变字符串转化为固定字符串
String numCheck = out.toString();
// 输出验证码
System.out.println(numCheck);
// 定义验证成功判断
boolean flag1 = true;
// 定义输入错误次数
int time = 1;
while (flag1) {
System.out.println("请输入验证码:");
String input = new Scanner(System.in).nextLine();
// 输入转为大写小等于验证码转为大小写则正确(关键)
if (input.toUpperCase().equals(numCheck.toUpperCase()) || input.toLowerCase().equals(numCheck.toLowerCase())) {
System.out.println("恭喜您验证成功!");
// 成功就退出系统
System.exit(0);
} else {
// 错误一次加一次
time++;
// 第三次还是输入错误时不用提示这句话,就要输出底下那句话
if (time <= 3) {
System.out.println("您的验证码输入错误,请重新输入!");
}
}
if (time > 3) {
System.out.println("您输入错误次数太多,已为您重新生成验证码!");
// 跳出循环
flag1 = false;
}
}
}
以上代码纯属个人想法,若有问题,欢迎留言指正!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/83632.html