java中的随机标识符
发布时间:2020-12-14 19:23:46 所属栏目:Java 来源:网络整理
导读:我想在 java中生成随机标识符.标识符应该具有固定的大小,并且生成相同标识符两次的概率应该非常低(系统具有大约500,000个用户).标识符应该很长,以至于通过蛮力攻击“猜测它”是不可行的. 到目前为止,我的方法是这样的: String alphabet = "0123456789ABCDE.
我想在
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,这是一个很大的数字,因此很难猜测. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |