像.net那样格式化sha-1哈希

本文关键字:sha-1 哈希 格式化 net | 更新日期: 2023-09-27 18:11:28

我有一个关于java如何打印HexString以及如何以c#使用BitConverter的相同格式打印它的问题。

我们(双方)正在生成这个十六进制作为SHA-1哈希字符串的结果:

a94a8fe5ccb19ba61c4c873d391e987982fbbd3("测试"字符串的哈希值)

问题是当我们在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;

像.net那样格式化sha-1哈希

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