java中的随机标识符

前端之家收集整理的这篇文章主要介绍了java中的随机标识符前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想在 java生成随机标识符.标识符应该具有固定的大小,并且生成相同标识符两次的概率应该非常低(系统具有大约500,000个用户).标识符应该很长,以至于通过蛮力攻击“猜测它”是不可行的.

到目前为止,我的方法是这样的:

String alphabet = "0123456789ABCDE....and so on";
int lengthOfAlphabet = 42; 
long length = 12; 

public String generateIdentifier(){
    String identifier = "";
    Random random = new Random(); 
    for(int i = 0;i<length;i++){
        identifier+= alphabet.charAt(random.nextInt(lengthOfAlphabet));
    }
    return identifier; 
}

我通过数据库中的约束强制执行唯一性.如果我点击已经创建的标识符,我将继续生成,直到找到一个未使用的标识符.

我的假设是我可以调整lenghtOfAlpahbet和length以获得我正在寻找的属性

>罕见的碰撞
>蛮力不可行
>标识符应尽可能短,因为系统用户必须输入标识符.

这是一个好方法吗?有没有人对“长度”的价值有任何想法?

解决方法

我认为randomUUID是你的朋友.它是固定宽度. http://docs.oracle.com/javase/1.5.0/docs/api/java/util/UUID.html#randomUUID()

如果我正确记住我的数学,因为UUID是32个十六进制数字(0-f),那么排列的数量是16 ^ 32,这是一个很大的数字,因此很难猜测.

原文链接:https://www.f2er.com/java/444641.html

猜你在找的Java相关文章