① 用java生成6位验证码,要求字母大小写数字组成,不能重复字符
public class GenerateRandomLetterAndNum {
public static void main(String[] args) {
Set<String> store = getletterandnum(6);
printSet(store);
}
public static Set<String> getletterandnum(int length) {
Set<String> set =new HashSet<String>();
for (int i = 0; i < length; i++) {
String value = getrandom();
set.add(value);
}
if (set.size()<length) { //如果没有生成6位
String value = getrandom();//继续调用生成随机数的方法
set.add(value);
}
return set;
}
private static String getrandom() { //生成随机字母和数字方法
String value = "";
Random random = new Random();
int gen = random.nextInt(2);//0、1、2
String charornum = gen % 2 == 0 ? "char" : "num";
if ("char".equals(charornum)) {
int temp = random.nextInt(2) % 2 == 0 ? 65 : 97;
int ascii = random.nextInt(26);
value += (char) (ascii + temp);
} else if ("num".equalsIgnoreCase(charornum)) {
value += String.valueOf(random.nextInt(10));
}
return value;
}
public static void printSet(Set set){ //打印set的方法
Iterator iterator = set.iterator();
while (iterator.hasNext()) {
String ele = (String) iterator.next();
System.out.print(ele+" ");
}
}
② 用java生成6位验证码,由大小写数字组成,不能重复字符
生成随机可以用Random类,不能重复可以考虑放在HashSet中,因为HashSet的值是不能重复的,看代码如下:
{
publicstaticvoidmain(String[]args){
Set<String>store=getletterandnum(6);
printSet(store);
}
publicstaticSet<String>getletterandnum(intlength){
Set<String>set=newHashSet<String>();
for(inti=0;i<length;i++){
Stringvalue=getrandom();
set.add(value);
}
if(set.size()<length){//如果没有生成6位
Stringvalue=getrandom();//继续调用生成随机数的方法
set.add(value);
}
returnset;
}
privatestaticStringgetrandom(){//生成随机字母和数字方法
Stringvalue="";
Randomrandom=newRandom();
intgen=random.nextInt(2);//0、1、2
Stringcharornum=gen%2==0?"char":"num";
if("char".equals(charornum)){
inttemp=random.nextInt(2)%2==0?65:97;
intascii=random.nextInt(26);
value+=(char)(ascii+temp);
}elseif("num".equalsIgnoreCase(charornum)){
value+=String.valueOf(random.nextInt(10));
}
returnvalue;
}
publicstaticvoidprintSet(Setset){//打印set的方法
Iteratoriterator=set.iterator();
while(iterator.hasNext()){
Stringele=(String)iterator.next();
System.out.print(ele+"");
}
}
③ java验证码的实现 需要知道吗
一.什么是验证码及它的作用
:验证码为全自动区分计算机和人类的图灵测试的缩写,是一种区分用户是计算机的公共全自动程序,这个问题可以由计算机生成并评判,但是必须只有人类才能解答.可以防止恶意破解密码、刷票、论坛灌水、有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登录。
二.图文验证码的原理
:在servlet中随机生成一个指定位置的验证码,一般为四位,然后把该验证码保存到session中.在通过Java的绘图类以图片的形式输出该验证码。为了增加验证码的安全级别,可以输出图片的同时输出干扰线,最后在用户提交数据的时候,在服务器端将用户提交的验证码和Session保存的验证码进行比较。
三.验证码所需的技术
:i.因为验证码中的文字,数字,应为都是可变的,故要用到随机生成数技术。
ii.如果验证码中包含汉字,则要用到汉字生成技术.
iii.可以使用Ajax技术实现局部刷新
iv.可以使用图片的缩放和旋转技术,
vi.随机绘制干扰线(可以是折现,直线等)
vii.如果考虑到验证码的安全性,可以使用MD5加密.
④ java短信验证码要注意什么问题
1、时间间隔
java短信自验证码并不是你请求几次都可以的。一般来讲在同一个时刻同一部手机发送的同一个请求,一般次数上不会超过三次,时间间隔上会有一分钟的限定,这是为了避免有些用户频繁无效的胡乱点击或恶意捣乱,影响正常的系统工作,让有需求的朋友无法正常完成验证。
2、次数限制
如果遇到有些用户总是大量的向后台发送请求,次数过多,频率过大,同一个手机号一天的时间里,超过了一定次数的请求数,那么该手机号会被认定为一个危险号,有可能会被系统列入黑名单之中,使得下次将无法实现请求验证。
3、错误限定
当用户对于同个类型的需求进行不断的验证,比如说更改密码、注册时发送的java短信验证码,在输入时的错误次数也是有限制的。因为正常、规范的短信验证码的发送只用很短时间用户就可以准确接收到,但如果用户总是不能正确输入,次数超过了三次的话,就会让其验证码无效,避免有人恶意尝试输入,确保用户的账户安全。
短信验证码在我们日常生活中扮演了及其重要的地位,是保障我们现在互联网信息的主流安全手段,因此在开发java短信验证码以及后期的维护中,都不可忽略其安全性。java短信验证码接入广东第五大道还可以,提供短信验证码测试。
⑤ 用java怎么制作验证码
验证方法很多
蠢一点的后台写代码,或者前台页面加js
当然你用框架自带的也行,例如struts的