随机产生字母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;
}
}
随机产生字母a--z, A-Z 的任意组合的更多相关文章
- 用js正则判断输入的两位字符,第一位是数字16进制的,第二位是I、O、Q、U除外的字母(A到Z)
项目中遇到客户的需求变化,要验证某个数据的正确性,判断输入的两位字符,第一位是数字16进制的,第二位是I.O.Q.U除外的字母(A到Z). 本来对js不熟练,网上参考了一下js正则验证的规则,使用正则 ...
- ruby中的\z与\Z区别
s = "this is\nthe name\n" puts "--------------" puts s.match(/name\Z/) puts s.ma ...
- hdu4282 x^z+y^z+x*y*z=k 解的个数
题意: x^z + y^z + x*y*z = k; (x < y ,z > 1),给你一个k问有多少组解. 思路: 暴力枚举z,y,然后二分查找x.注意一点最好用 ...
- js随机生成字母数字组合的字符串 随机动画数字
效果描述: 附件中只有一个index.html文件有效 其中包含css以及html两部分内容 纯js生成的几个随机数字 每次都不重复,点击按钮后再次切换 使用方法: 1.将css样式引入到你的网页中 ...
- 【BZOJ】2038: [2009国家集训队]小Z的袜子(hose)(组合计数+概率+莫队算法+分块)
http://www.lydsy.com/JudgeOnline/problem.php?id=2038 学了下莫队,挺神的orzzzz 首先推公式的话很简单吧... 看的题解是从http://for ...
- QTP生成随机数字+字母
以下函数实现随机生成17位数(包括字母和数字),仍有改进的空间,可根据具体要求适当修改 Dim targetstring '调用返回函数给变量.Function过程通过函数名返回一个值 targets ...
- [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+ ...
- 教你一招:EXCEL单元格随机生成字母
=CHAR(RANDBETWEEN(1,4)+65) 65代表大写字母A,依次类推 1代表从A开始 4代表到D结束
- php 随机显示据今天30天内的任意一天
function randomDate() { //echo date( "Y-m-d H:m:s", $newtime); //echo date("Y-m-d H:m ...
随机推荐
- RPM的基础命令/yum基本命令
rpm的使用方式非常简单,常用的一些命令如下: 安装软件:rpm -ivh *.rpm 卸载软件:rpm -e 软件名 升级形式安装:rpm -U *.rpm 常用参数: -v 显示详细信息 -h 显 ...
- css扁平化博客学习总结(一)模块分析
一.模块分析 1.每开发一个项目之前,首先要对项目进行一个大致规划,它到底要做什么功能,它有什么具体需求. 2.所以需要进行模块化分析,把这些东西具象化,把一个问题模块化,对需求有一个宏观的了解. 3 ...
- 支持BLOB操作的Jena框架扩展——JenaBLOB
与研究语义网的同行们分享一下上半年做的一个东西,它是支持BLOB操作的Jena框架扩展--JenaBLOB,已在GitHub上开源,欢迎提出宝贵意见! 众所周知,Jena是不支持BLOB类型的Lite ...
- Extjs3笔记 fbar
在项目中会遇到在grid右下角显示合计之类的显示. 之前使用过的方式: 1.用width强制顶过去. 2.利用css来控制. 弊端: 利用第一种方式:导致调整窗口大小时会导致合计不能根据窗体的大小变化 ...
- ASP实现清除HTML标签,清除 空格等编码
'清除HTML格式 Function RemoveHTML(strText) Dim RegEx Set RegEx = New RegExp RegEx.Global = True '清除HTML标 ...
- sql 中条件in参数问题
经常遇到条件为in的模糊查询,sql传参可以在service中直接传递参数,不必使用占位符 select * from ud_order where status in ("+status+ ...
- 日志记录类LogHelper
开源日志log4net使用起来很方便,但是项目中不让用,所以自己重写了一个类,用来记录日志,比较简单. 1.首先是可以把日志分成多个类型,分别记录到不同的文件中 /// <summary> ...
- ###STL学习--适配器
点击查看Evernote原文. #@author: gr #@date: 2014-08-24 #@email: forgerui@gmail.com STL中的适配器. ###stl学习 |--迭代 ...
- iOS创建UUID
- (NSString *)getUUID { CFUUIDRef uuidObj = CFUUIDCreate(nil); //create a new UUID NSString * uuidSt ...
- 启发式搜索 A*算法的OC 实现
前两天重新学习了下A*算法,上次学习A*算法已经是5年前了,看到网上铺天盖地的A*算法都是C.C++等等其他语言的,就是没有OC 的,所以抽空写了一份.今天太晚了就不说明A*算法的细节了,大家如果想学 ...