java制作简单验证码并验证程序

你的名字 2023-10-01 22:43 25阅读 0赞

在平时,我们登录一些网站或者软件时经常会让我们填写验证码,通过输入验证码功能可以防止:恶意破解密码、刷票、论坛灌水,有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试,实际上用验证码是现在很多网站通行的方式,下面我们利用一个比较简易的方式实现这个功能。

我们制作一个简单的四位验证码验证程序,程序首先生成一个随机验证码,然后用户输入验证码进行验证,输入字母时可以不区分大小写,输入正确则成功,若输入错误会提示重新输入,若超过三次错误则会重新生成一个验证码,直到你输入成功为止,下面为完整代码:

  1. public static void main(String[] args) {
  2. // 定义循环判断
  3. boolean flag = true;
  4. while (flag) {
  5. // 验证成功时自动退出,未验证成功时一直验证
  6. makeNum();
  7. }
  8. }
  9. // 产生验证码方法
  10. public static void makeNum() {
  11. String str1 = "abcdefghijklmnopqrstuvwxyz";
  12. String str2 = "0123456789";
  13. // 小写字母数组
  14. char[] arr1 = str1.toCharArray();
  15. // 大写字母数组
  16. char[] arr2 = str1.toUpperCase().toCharArray();
  17. // 数字数组
  18. char[] arr3 = str2.toCharArray();
  19. // 生成的随机数为数组的下标
  20. // 设四位验证码第一位和第四位是小写字母,第二位是大写字母,第三位是数字
  21. int first = new Random().nextInt(arr1.length);
  22. int second = new Random().nextInt(arr2.length);
  23. int third = new Random().nextInt(arr3.length);
  24. int fourth = new Random().nextInt(arr1.length);
  25. // 定义一个可变字符串拼接四个字符
  26. StringBuffer out = new StringBuffer();
  27. out.append(arr1[first]);
  28. out.append(arr2[second]);
  29. out.append(arr3[third]);
  30. out.append(arr1[fourth]);
  31. // 因为StringBuffer类没有转化大小写方法,所以还要把可变字符串转化为固定字符串
  32. String numCheck = out.toString();
  33. // 输出验证码
  34. System.out.println(numCheck);
  35. // 定义验证成功判断
  36. boolean flag1 = true;
  37. // 定义输入错误次数
  38. int time = 1;
  39. while (flag1) {
  40. System.out.println("请输入验证码:");
  41. String input = new Scanner(System.in).nextLine();
  42. // 输入转为大写小等于验证码转为大小写则正确(关键)
  43. if (input.toUpperCase().equals(numCheck.toUpperCase()) || input.toLowerCase().equals(numCheck.toLowerCase())) {
  44. System.out.println("恭喜您验证成功!");
  45. // 成功就退出系统
  46. System.exit(0);
  47. } else {
  48. // 错误一次加一次
  49. time++;
  50. // 第三次还是输入错误时不用提示这句话,就要输出底下那句话
  51. if (time <= 3) {
  52. System.out.println("您的验证码输入错误,请重新输入!");
  53. }
  54. }
  55. if (time > 3) {
  56. System.out.println("您输入错误次数太多,已为您重新生成验证码!");
  57. // 跳出循环
  58. flag1 = false;
  59. }
  60. }
  61. }

以上代码纯属个人想法,若有问题,欢迎留言指正!

发表评论

表情:
评论列表 (有 0 条评论,25人围观)

还没有评论,来说两句吧...

相关阅读

    相关 java制作简单验证验证程序

    > 在平时,我们登录一些网站或者软件时经常会让我们填写验证码,通过输入验证码功能可以防止:恶意破解密码、刷票、论坛灌水,有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方

    相关 JavaWeb---制作验证

    说起验证码,绝壁是个让人蛋疼的问题,特别是节假日在12306上面抢票的时候遇到的外星系验证码,大大降低了用户的体验度! 可是还是要知道验证码为什么存在,其作用是什