vera 代码报告中的密码算法违规

问题描述

在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();