public class Generator {
private static char[] BASE64 = "abcdefghijklmnopqrstuvwxyz_ABCDEFGHIJKLMNOPQRSTUVWXYZ-0123456789".toCharArray();
public static String generateUUID() {
UUID uuid = UUID.randomUUID();
char[] chs = new char[22];
long most = uuid.getMostSignificantBits();
long least = uuid.getLeastSignificantBits();
int high = (int)((most >> 13) ^ (least >> 31)) & 0x3c;
int k = chs.length - 1;
for(int i = 0; i < 10; i++, least >>>= 6) {
chs[k--] = BASE64[(int)(least & 0x3f)];
}
chs[k--] = BASE64[(int)((least & 0x3f) | (most & 0x30))];
most >>>= 2;
for(int i = 0; i < 10; i++, most >>>= 6) {
chs[k--] = BASE64[(int)(most & 0x3f)];
}
chs[k--] = BASE64[(int)(high | most)];
return new String(chs);
}
}