Java生成随机字符

前言

在网络上进行登录或注册时,输入验证码是必不可少的。使用验证码目的无非是防止一些人的恶意操作,现在我们可以写一个简单的验证码生成器来生成我们自己的验证码。

结构

  • 以四个字符的验证码为例,每次显示四个不重复字符,那就需要一个字符库存储需要显示的字符验证码。
  • 这个字符库的内容可以根据需要来添加字符,这里我们可以定义一个字符串数组来储存需要的字符。
  • 将这个字符串数组添加到一个List集合中(集合泛型指定为Sting类型)。
  • 而后,再把集合内的元素进行随机排列,随机排列后循环四次每次从集合中取出一个元素,可以使用StringBuffer来储存每次取出的元素。

实现代码

import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Random;

public class VerificationCode2 {

  public static void main(String[] args) {
    
    // 定义字符库,储存需要显示的字符
    String[] data = {
         "1", "2", "3", "4", "5", "6", "7", "8", "9", "0",
         "a", "b", "c", "d", "e", "f", "g", "h", "i", "j",
         "k", "l", "m", "n", "o", "p", "q", "r", "s", "t",
         "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", 
         "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", 
         "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", 
         "Y", "Z"
    };
    
    // 输出生成的字符验证码,这里测试50次生成的验证码
    for(int i = 1; i <= 50; i++) {
      System.out.print(create(data) + " | ");
      if(i % 5 == 0) {
        System.out.println("\n");
      }
    }
    
  }

  /**
   * 生成随机字符的方法
   * 根据传入的字符库,返回生成的字符验证码
   */
  public static String create(String[] data) {
    // 将字符串数组转换为List集合
    List<String> list = Arrays.asList(data);
    // 将List集合内的所有元素进行随机排列
    Collections.shuffle(list);
    // StringBuffer存储每次循环取出的元素
    StringBuffer st = new StringBuffer();
    // 随机数对象
    Random ran = new Random();
    for(int i = 0;i < 4; i++) {
      // 生成一个大于0小于62的随机数,根据此随机数取出集合中对应下标的元素存储到StringBuffer中
      st.append(list.get(ran.nextInt(62))).append(" ");
    }
    // 返回StringBuffer对象内的字符串数据
    return st.toString();
  }
  
}

输出结果

如图,每次生成的字符验证码都不相同。如果想显示不同的验证码只需要根据需求修改字符库内的字符数据即可。

4 4 j k  | w 2 v n  | j 8 m W  | y I P C  | I y w 1  | 

a 4 c r  | Y i Y N  | A N j s  | v h j R  | A c Q P  | 

B m o Y  | A c P J  | T U 5 A  | r r P F  | Z T z s  | 

W n 9 I  | b W F U  | s F 9 F  | 6 7 M z  | v f 5 N  | 

G R C i  | F d f B  | A a Y u  | o A 7 r  | N 1 k X  | 

F 7 M S  | k y 8 p  | E A i s  | O h z r  | 3 T z H  | 

X D F k  | u h U y  | u E s B  | 0 8 N 6  | o g 9 3  | 

S 0 b P  | Q J z k  | 5 O 9 9  | 0 r G h  | s H f O  | 

c s r 0  | I a 7 j  | B 7 b I  | Q M E t  | g 5 t 2  | 

Q 5 o X  | L 0 U 7  | 3 q G l  | I i s I  | o C M s  |
点赞
  1. CBD for Sale说道:

    I think that is among the such a lot important info for me.

    And i am glad reading your article. But want
    to commentary on some basic issues, The web site style is wonderful, the articles
    is truly excellent : D. Good activity, cheers

    My website ... CBD for Sale

发表评论

电子邮件地址不会被公开。 必填项已用*标注