像 .net 一样格式化 sha-1 散列

Format sha-1 hash like .net does

我对 java 如何打印 HexString 以及如何使用 BitConverter 以与 C# 相同的格式打印它有疑问。

我们(双方)正在生成此十六进制作为使用 SHA-1 散列字符串的结果:

a94a8fe5ccb19ba61c4c873d391e987982fbbd3("test" 字符串的哈希值)

问题是当我们在 C# 中测试散列时,C# 以大写字母打印并以“-”分隔,如 A9-4A-8F .. 等等。

如何打印与java相同的格式?

散列和打印的代码是这样的:

 String password = "test";

        byte[] key = password.getBytes();

        MessageDigest md = MessageDigest.getInstance("SHA-1",new BouncyCastleProvider());

        byte[] hash = md.digest(key);

        String result = "";
        for (byte b : hash) {
            result += Integer.toHexString(b & 255);
        }
        return result;
String result = "";
for (byte b : hash) {
    result += Integer.toHexString(b & 255).toUpperCase() + "-";
}
return result.subString(0, result.length()-1);