Jsp ·

JAVA随机生成指定长度的密码

在用户注册时,一般都不会给用户设置指定密码,通用做法是将用户的密码随机生成后通过邮件的方式发送给用户,然后让用户激活后即可登录修改密码

package com.common.util;

import java.util.Random;

/**
 * 密码工具类
 * 
 * @author Leo.du
 * @date 2014年9月4日
 */
public final class PasswordUtils {

    private PasswordUtils() {
    }

    /**
     * 随机生成一个指定长度的密码
     * 
     * @param length 指定长度
     * @return 密码
     */
    public static String randomOne(int length) {
        int i; // 生成的随机数
        int count = 0; // 生成的密码的长度
        char[] str = { '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', '0', '1', '2', '3', '4', '5', '6','7', '8', '9' };

        final int maxNum = str.length;

        StringBuffer pwd = new StringBuffer("");
        Random r = new Random();
        while (count < length) {
            // 生成随机数,取绝对值,防止生成负数, 生成的数最大为maxNum - 1
            i = Math.abs(r.nextInt(maxNum)); 

            if (i >= 0 && i < maxNum) {
                pwd.append(str[i]);
                count++;
            }
        }

        return pwd.toString();
    }
}

参与评论