randomstringutils是否创建了确定的或可复制的序列?

hpcdzsge  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(368)

在我们使用的java应用服务器上 RandomStringUtils.randomAlphabetic() 以迭代方式为重复出现的类似段落顺序创建html id。
通过这些生成的id,我们允许内部页面锚导航(没有单击时触发的页面加载)。
现在的问题是,我是否可以将这些生成的id也用于从外部页面链接到此目标的url?根据我的观察,对同一页的后续请求,会创建相同的id序列。如果生成的序列 randomAlphabetic 确实是可预测的(也可以通过多个页面加载),我们不仅可以使用这些链接进行内部页面导航,还可以使用从外部引用的链接,因为第一个、第二个、第三个。。。生成的id始终相同。

r3i60tvu

r3i60tvu1#

如果段落的给定文本字符串的“随机”id总是相同的(也就是说,id仅仅是段落文本的函数),那么应该考虑哈希函数,而不是伪随机数生成器,例如 randomAlphabetic . (我假设对于识别页面部分的用例,为不同的文本字符串生成重复id的风险可以忽略不计。但是,如果你不能容忍这种风险,就不应该使用散列函数。)有很多种散列函数用于此目的;甚至 java.lang.String.hashCode() 因为该方法的java文档指定了它使用的确切算法,所以在这里可以使用。
此外, randomAlphabetic 不是你想要的“确定性”,原因有两个:
无法设置该方法使用的基础生成器的种子( RandomStringUtils 存储用未定义的种子初始化的静态prng变量,即 new Random() ).
的文档 RandomStringUtils.randomAlphabetic (除其他外) RandomStringUtils 方法)没有指定用于生成随机字符串的确切算法。

相关问题