使用java.security.SecureRandom生成随机单词时,Veracode的Entropy不足

D.P*_*TIT 5 java random entropy veracode

我创建了一个使用org.apache.commons.lang.RandomStringUtils生成随机单词(字母数字)的类.

    public String randomWord(int wordLength) {
        return RandomStringUtils.random(wordLength, 0, 0, true, true, null, new SecureRandom());
    }
Run Code Online (Sandbox Code Playgroud)

这段代码工作正常,但是当我把它提交给Veracode时,我得到一个中等错误"Insufficient Entropy(CWE ID 331)"

我认为使用SecureRandom足以修复此错误,但事实并非如此,我不知道为什么.

为什么使用SecureRandom不够好或不够安全?
有没有办法使用org.apache.commons.lang.RandomStringUtils而不会让Veracode不开心?是否有任何其他安全库可用于生成安全的随机字母数字单词?

小智 2

SecureRandom 足以制作加密安全的伪随机数生成器。它不需要在 veracode 中设置种子。

veracode 会引发此标志,因为它不支持 apache RandomStringUtils。

验证此链接以获取更多信息。对于您的情况,您可以标记此误报。 https://www.veracode.com/blog/research/cryptographyally-secure-pseudo-random-number-generator-csprng