publicstaticStringgenerateFileId(int type){char[] cs =newchar[]{'0','1','2','3','4','5','6','7','8','9','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'};long time = type +System.currentTimeMillis();Random r =newRandom();
time = time *1000+ r.nextInt(1000);
time = time *1000+ r.nextInt(1000);StringBuilder sb =newStringBuilder();long temp;for(long index = time; index >0;){
temp = index;
index = index / cs.length;int y =(int)(temp - index *(cs.length));
sb.append(cs[y]);}return sb.toString();}
token 生成和解析
publicstaticStringtokentoUser(String token){String s =""+ token.charAt(62)+ token.charAt(2);int length =Integer.parseInt(s);int[] posArr =random(length);StringBuilder sb =newStringBuilder();for(int pos : posArr){
sb.append(token.charAt(pos));}for(int i = posArr.length; i < length; i++){
sb.append(token.charAt(i +43- posArr.length +1));}return sb.toString();}publicstaticStringuserToToken(String user){char[] cs =newchar[]{'0','1','2','3','4','5','6','7','8','9','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'};Random r =newRandom();StringBuilder sb =newStringBuilder();String l;int[] ii =random(user.length());if(user.length()<10){
l ="0"+ user.length();}else{
l =String.valueOf(user.length());}for(int i =0; i <64; i++){if(i ==2){
sb.append(l.charAt(1));continue;}if(i ==62){
sb.append(l.charAt(0));continue;}int index =containIndex(ii, i);if(index !=-1){
sb.append(user.charAt(index));continue;}if(i >43){if(ii.length < user.length()){int ci = i -43+ ii.length -1;if(ci < user.length()){
sb.append(user.charAt(ci));continue;}}}int ri = r.nextInt(cs.length);
sb.append(cs[ri]);}return sb.toString();}privatestaticint[]random(int seed){Random rs =newRandom(seed);int[] ii =newint[seed];int temp;int i =0;for(; i < seed; i++){boolean g =false;for(int j =0; j <10; j++){
temp = rs.nextInt(40)+3;if(containIndex(ii, temp)!=-1){continue;}else{
g =true;
ii[i]= temp;break;}}if(!g){break;}}returnArrays.copyOf(ii, i);}privatestaticintcontainIndex(int[] arr,int value){for(int i =0; i < arr.length; i++){if(arr[i]== value){return i;}if(arr[i]==0){return-1;}}return-1;}