在 C# 中使用 SHA1 算法将 ComputeHash 转换为 Java
Convert ComputeHash using SHA1 algorithm in C# to Java
我有一个在 C# 中使用 SHA1 算法加密字符串的函数。现在我想将它准确地转换为 Java 语言。我已经尝试过,但我没有得到 C# 和 Java 的相同输出。
有好心人帮我转换一下。对此我真的很感激。谢谢
这是 C# 代码:
public static string ComputeHash(string inString) {
SHA1 sh = SHA1.Create();
byte[] data = UTF8Encoding.UTF8.GetBytes(inString);
byte[] result = sh.ComputeHash(data);
return ToHexString(result);
}
public static string ToHexString(byte[] data) {
string s = "";
for (int i = 0, n = data.Length; i < n; i++) {
s += String.Format("{0:X2}", data[i]);
}
return s;
}
我更改了代码并为 C# 和 Java 获得了相同的输出。
这是我的 Java 代码:
public static String ComputeHash(String password) throws NoSuchAlgorithmException, UnsupportedEncodingException{
MessageDigest md = MessageDigest.getInstance("SHA-1");
md.reset();
md.update(password.getBytes("UTF-8"));
return toHexString(md.digest());
}
private static String toHexString(byte[] data){
Formatter formatter = new Formatter();
for(byte b : data){
formatter.format("%02x", b);
}
String result = formatter.toString();
formatter.close();
return result;
}
输入相同的字符串:"abc123",得到相同的结果:6367C48DD193D56EA7B0BAAD25B19455E529F5EE
谢谢 M. Schena,我在您的评论中找到了我的解决方案。非常感谢!
我有一个在 C# 中使用 SHA1 算法加密字符串的函数。现在我想将它准确地转换为 Java 语言。我已经尝试过,但我没有得到 C# 和 Java 的相同输出。
有好心人帮我转换一下。对此我真的很感激。谢谢
这是 C# 代码:
public static string ComputeHash(string inString) {
SHA1 sh = SHA1.Create();
byte[] data = UTF8Encoding.UTF8.GetBytes(inString);
byte[] result = sh.ComputeHash(data);
return ToHexString(result);
}
public static string ToHexString(byte[] data) {
string s = "";
for (int i = 0, n = data.Length; i < n; i++) {
s += String.Format("{0:X2}", data[i]);
}
return s;
}
我更改了代码并为 C# 和 Java 获得了相同的输出。 这是我的 Java 代码:
public static String ComputeHash(String password) throws NoSuchAlgorithmException, UnsupportedEncodingException{
MessageDigest md = MessageDigest.getInstance("SHA-1");
md.reset();
md.update(password.getBytes("UTF-8"));
return toHexString(md.digest());
}
private static String toHexString(byte[] data){
Formatter formatter = new Formatter();
for(byte b : data){
formatter.format("%02x", b);
}
String result = formatter.toString();
formatter.close();
return result;
}
输入相同的字符串:"abc123",得到相同的结果:6367C48DD193D56EA7B0BAAD25B19455E529F5EE
谢谢 M. Schena,我在您的评论中找到了我的解决方案。非常感谢!