随机产生字母a--z, A-Z 的任意组合

VERSION 1.0    引自: http://www.coderanch.com/t/134491/Security/generating-secure-tokens

package demo;

import java.util.Random;

 

/*

 * This code is a discussion of an opinion in a technical forum.

 * You may develope ideas from this code. You may not use it directly.

 */

 

public class DM

{

    String getRandomIdentifier(int length) throws Exception

    {

        final int limitingValue = 64;// Whatever you decide, not me.

        if(length < limitingValue)

        {

            try

            {

                // The first step is to get a filename generator

                char lowerBound =   ‘a‘;

                char upperBound =   ‘z‘;

                Random randomCharacterGenerator = new Random();

                // Then get some characters

                char[] identifierBuffer = new char[length];//

                int index = identifierBuffer.length;//

                final int numericLowerBound = (int) lowerBound;

                final int numericUpperBound = (int) upperBound;

                final int range = numericUpperBound - numericLowerBound;//

                do

                {

                    // recoded in mesage edit, original defective

                    int getOne = randomCharacterGenerator.nextInt(range);

                    int next = numericLowerBound + getOne;

                    identifierBuffer[--index] = (char) next;

                }

                while(index > 0x00000000);

                return new String(identifierBuffer);//

            }

            catch(ArrayIndexOutOfBoundsException aioobe)

            {

                System.out.println(aioobe.getMessage());

            }

        }

        else

        {

            throw new Exception("Contact system administrator.");//

        }

        return null;

    }

}

VERSION 2.0    改进型:

package token;

import java.util.Random;

public class DM {
    public static void main(String[] args) throws Exception {
        System.out.println("1==97===:" + (int) ‘a‘);
        System.out.println("2==122===:" + (int) ‘z‘);
        System.out.println("3==65===:" + (int) ‘A‘);
        System.out.println("4===90==:" + (int) ‘Z‘);
        DM mn = new DM();
        System.out.println(mn.getRandomIdentifier(26));
    }

String getRandomIdentifier(int length) throws Exception {
        final int limitingValue = 164;// Whatever you decide, not me.
        if (length < limitingValue) {
            try {
                // 26个小写+26个大小 = 52 字母
                final int range = 52;//
                char[] charStr = new char[range];
                int j = 0;
                // A=65, z =122
                for (int i = 65; i <= 122; i++) {
                    // Z--a 之间的跳过
                    if (i > 90 && i < 97) {
                        continue;
                    }
                    charStr[j] = (char) i;   // 这里将保存52个大小字母
                    j++;
                }

   // 这里其实可以将 0 - 9 的数字也添加进去
                Random randomCharacterGenerator = new Random();
                // Then get some characters
                char[] identifierBuffer = new char[length];//
                int index = identifierBuffer.length;//
                do {
                    // 产生0至51 共52个随机数,用于索引字母数组
                    int getOne = randomCharacterGenerator.nextInt(range);
                    identifierBuffer[--index] = charStr[getOne];
                } while (index > 0x00000000);
                return new String(identifierBuffer);//
            } catch (ArrayIndexOutOfBoundsException aioobe) {
                System.out.println(aioobe.getMessage());
            }
        } else {
            throw new Exception("Contact system administrator.");//
        }
        return null;
    }

}

时间: 2024-10-14 15:16:25

随机产生字母a--z, A-Z 的任意组合的相关文章

用js正则判断输入的两位字符,第一位是数字16进制的,第二位是I、O、Q、U除外的字母(A到Z)

项目中遇到客户的需求变化,要验证某个数据的正确性,判断输入的两位字符,第一位是数字16进制的,第二位是I.O.Q.U除外的字母(A到Z). 本来对js不熟练,网上参考了一下js正则验证的规则,使用正则表达式完成了这个验证. 1 function check() { 2 var str = document.getElementById("txtEnglishName").value; 3 var reg=/^[0-9a-fA-F][^IOQU]$/; 4 if (str.length!

字符串移动,字符串为*号和26个字母的任意组合,把*都移动到最左侧,字母移动到右侧,顺序不变

#include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> #define MAX 256 void move_stars(char* str) { int len = strlen(str) - 1; char* p = str + len; char* q = p; for (;len >= 0; --len, --q) { if (isalpha(*q

php 随机显示据今天30天内的任意一天

function randomDate() { //echo date( "Y-m-d H:m:s", $newtime); //echo date("Y-m-d H:m:s", strtotime("+2 week 1 days 7 hours 5 seconds")); $begin = strtotime("now"); $end = strtotime("+1 Month"); $timestamp

js实现字符串处理,具体如下:字母变成相邻字母,标点符号不变,结果如果是元音字母则大写,z变成a。

<script type="text/javascript"> function LetterChanges(str) { str=str.split("");//将字符串变成数组 for(i=0;i<str.length;i++){ str[i]=str[i].charCodeAt();//将数组里的字符变成ASCll码 if(str[i]>64&&str[i]<122){//通过ASCll码判断字符的类型,用分支结构

【BZOJ】2038: [2009国家集训队]小Z的袜子(hose)(组合计数+概率+莫队算法+分块)

http://www.lydsy.com/JudgeOnline/problem.php?id=2038 学了下莫队,挺神的orz 首先如果推公式的话很简单吧.对于查询$[l,r]$ $$ans=\frac{\sum \binom{x_i}{2}}{\binom{r-l+1}{2}}$$ //晚修...回来补.. #include <cstdio> #include <cstring> #include <cmath> #include <string> #

linux随机10字母病毒

病毒表现: 网络流量暴满,疯狂地向香港的一个IP发数据,同时在top里面表现为随机的10位字母的进程,看/proc里面的信息,则为ls,cd之类常见的命令,CPU利用率也在top之首.杀死该进程后,会再随机产生一个新的进程. 清楚病毒步骤: 查看/proc/_pid/cmdline里面全是伪造信息,随机产生ps.su.top等命令: 由于病毒产生大量的流量,先使用iptables封掉出口IP,当病毒检测流量发布出去后会进入监听状态,监听端口: 想到病毒一般都会有检测机制,所以查找其根文件,cro

若干位随机数字字母混合验证码

今天,遇到了一个随机验证码的问题,就顺便说一下这个验证码怎么搞 相信大家应该对随机数不陌生 就是Math里的方法 这里要用到一个知识点 就是利用ASCII码转字符 先附上随机数代码 function suiji (m,n){ var sj = parseInt(Math.random()*(n-m+1)+m); return sj; } 这里是我封装的一个m-n之间的随机数 随机数有了 我们就要用到ASCII码  看图 看图 我们能知道 数字的范围是48-57 大写字母是65-90 小写字母是9

[Mathematics][Fundamentals of Complex Analysis][Small Trick] The Trick on drawing the picture of sin(z), for z in Complex Plane

Exercises 3.2 21. (a). For $\omega = sinz$, what is the image of the semi-infinite strip $S_1 = \{x+iy|-\pi<x<\pi,y>0\}$ (b). what is the image of the smaller semi-infinite strip $S_2 = \{x+iy|-\frac{\pi}{2}<x<\frac{\pi}{2},y>0\}$ Soluti

应用概率统计模板

apsart.cls 1 % !Mode:: "TeX:UTF-8" 2 %% 3 %% This is file `APSart.cls', 4 %% 5 %% Copyright 2006-2012 6 %% 7 %% ---------------------------------------------------------------------- 8 %% 9 %% It may be distributed and/or modified under the 10 %