问题描述
在java中使用disgestUils.md5Hex生成32位随机数。它在 veracode 报告中被捕获为 Violation。
您能否建议我如何在 java 中生成不应在 veracode 报告中捕获的 32 位数字。
解决方法
虽然我不能代表 Veracode,但您可能想使用 SecureRandom 的实例来创建用于加密或安全令牌目的的随机数。
要从 SecureRandom 中获取 32 个十六进制字符,您需要 16 个字节,然后可以使用 StringBuilder 将这些字节廉价地转换为 String。
例如:
import java.security.SecureRandom;
...
SecureRandom random = new SecureRandom();
byte[] bytes = new byte[16];
random.nextBytes(bytes);
StringBuilder builder = new StringBuilder();
for (byte b : bytes) {
String hex = Integer.toHexString(b & 0xff);
if (hex.length() == 1) {
builder.append('0');
}
builder.append(hex);
}
String token = builder.toString();