像 .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);
我对 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);