查网站怎么做的,企业做网站维护价格,c 做商务网站方便吗,seo全网营销的方式需求#xff1a;想要生成位数不低于16的随机密码#xff0c;而且要包含大小写字母#xff0c;数字#xff0c;特殊字符四类
用别人的在线生成器#xff0c;生成的密码有个别没有数字或者特殊字符#xff0c;验证方式就是#xff0c;生成几个长度是4的密码#xff0c;看…需求想要生成位数不低于16的随机密码而且要包含大小写字母数字特殊字符四类
用别人的在线生成器生成的密码有个别没有数字或者特殊字符验证方式就是生成几个长度是4的密码看一下生成的密码是否都包含这四类
自己简单写了一个js版和java版的
特点1保证每个密码都包含四类实现方式先随机生成这四类各一个字符比如aA1*然后放到随机的位置上去最后给剩余的位置随机取一个字符。
特点2设置黑名单字符有的字体或者软件上显示大写i和小写L分不清如Il把这两个排除1可能也会分不清也可以修改源码加上黑名单。
特点3四种类型的字符出现的概率一样
js源码如下
html
head
/head
body
div iddata
/div
/body
script
function getRandom(start,end){// 随机数[start,end)return parseInt(Math.random()*(end-start)start);
}
function getRandomWithout(start,end,without){// 随机数[start,end) TODO var r parseInt(Math.random()*(end-start)start);if(without.includes(r)){return getRandomWithout(start,end,without);}return r;
}var special [$,%,*,,-,,,.,[,]];
var blacklist [I,l];
// a-z:97-122 A-Z:65-90 数字:48-57 特殊符号:
function getLetterLow(blacklist){var v String.fromCharCode(getRandom(97,123));if(blacklist.includes(v)){return getLetterLow(blacklist);}return v;
}
function getLetterUp(blacklist){var v String.fromCharCode(getRandom(65,91));if(blacklist.includes(v)){return getLetterUp(blacklist);}return v;
}
function getNumber(blacklist){var v String.fromCharCode(getRandom(48,58));if(blacklist.includes(v)){return getNumber(blacklist);}return v;
}
function getSpecial(blacklist){var v special[getRandom(0,special.length)];if(blacklist.includes(v)){return getSpecial(blacklist);}return v;
}var length 16;
var count 100;
for(var i0;icount;i){var pwd new Array(length);var r_index new Array(4); // 随机的位置var r_index_index 0;var r_index_data new Object(); // 随机的位置上的数据// 随机一个小写字母并到随机位置var r1 getLetterLow(blacklist);var r1_index getRandom(0,length);r_index[r_index_index] r1_index;r_index_index;r_index_data[r1_index] r1;// 随机一个大写字母并到随机位置var r2 getLetterUp(blacklist);var r2_index getRandomWithout(0,length,r_index);r_index[r_index_index] r2_index;r_index_index;r_index_data[r2_index] r2;// 随机一个数字并到随机位置var r3 getNumber(blacklist);var r3_index getRandomWithout(0,length,r_index);r_index[r_index_index] r3_index;r_index_index;r_index_data[r3_index] r3;// 随机一个特殊字符并到随机位置var r4 getSpecial(blacklist);var r4_index getRandomWithout(0,length,r_index);r_index[r_index_index] r4_index;r_index_index;r_index_data[r4_index] r4;for(var j0;jlength;j){if(r_index.includes(j)){pwd[j] r_index_data[j];}else{var type getRandom(1,5);var data 0;if(type1){data getLetterLow(blacklist);}else if(type2){data getLetterUp(blacklist);}else if(type3){data getNumber(blacklist);}else if(type4){data getSpecial(blacklist);}pwd[j] data;}}var data document.getElementById(data);var pdocument.createElement(span);p.innerHTMLpwd.join();data.appendChild(p);data.appendChild(document.createElement(br));
}/script
/html
java代码如下
package com.kingdee.eas.myutil;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;public class RandomPasswordUtil {private static final char[] LetterLow { 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 };private static final char[] LetterUP { 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 };private static final char[] Number { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };private static char[] Special { !, #, $, %, *, , -, ,, ., ?, [, ] };private static ListString BlackList new ArrayListString();public static ListString getRandomPassword(int count, int length) {BlackList.add(I);BlackList.add(l);ListString list new ArrayListString();for (int i 0; i count; i) {char[] pwd new char[length];ListInteger index new ArrayListInteger();MapInteger, Character r_index_data new HashMapInteger, Character();// 随机一个小写字母并到随机位置char r1 getLetterLow(BlackList); // 数据int r1_index getRandom(0, length); // 位置index.add(r1_index);r_index_data.put(r1_index, r1);// 随机一个大写字母并到随机位置char r2 getLetterUp(BlackList); // 数据int r2_index getRandomWithout(0, length, index);// 位置index.add(r2_index);r_index_data.put(r2_index, r2);// 随机一个数字并到随机位置char r3 getNumber(BlackList); // 数据int r3_index getRandomWithout(0, length, index);// 位置index.add(r3_index);r_index_data.put(r3_index, r3);// 随机一个特殊字符并到随机位置char r4 getSpecial(BlackList); // 数据int r4_index getRandomWithout(0, length, index);// 位置index.add(r4_index);r_index_data.put(r4_index, r4);for (int j 0; j length; j) {if (r_index_data.containsKey(j)) {pwd[j] r_index_data.get(j);} else {int type getRandom(1, 5);char data 0;if (type 1) {data getLetterLow(BlackList);} else if (type 2) {data getLetterUp(BlackList);} else if (type 3) {data getNumber(BlackList);} else if (type 4) {data getSpecial(BlackList);}pwd[j] data;}}list.add(String.valueOf(pwd));}return list;}private static char getLetterLow(ListString blacklist) {char v LetterLow[getRandom(0, LetterLow.length)];if (blacklist.contains(v)) {return getLetterLow(blacklist);}return v;}private static char getLetterUp(ListString blacklist) {char v LetterUP[getRandom(0, LetterUP.length)];if (blacklist.contains(v)) {return getLetterUp(blacklist);}return v;}private static char getNumber(ListString blacklist) {char v Number[getRandom(0, Number.length)];if (blacklist.contains(v)) {return getNumber(blacklist);}return v;}private static char getSpecial(ListString blacklist) {char v Special[getRandom(0, Special.length)];if (blacklist.contains(v)) {return getSpecial(blacklist);}return v;}private static int getRandom(int start, int end) {return (int) (Math.random() * (end - start) start);}private static int getRandomWithout(int start, int end, ListInteger without) {int r (int) (Math.random() * (end - start) start);if (without.contains(r)) {return getRandomWithout(start, end, without);}return r;}public static void main(String[] args) {ListString list getRandomPassword(100, 4);for (String s : list) {System.out.println(s);}}
}