Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用C#中的SHA1算法将ComputeHash转换为Java_Java_C#_Encryption_Sha1 - Fatal编程技术网

使用C#中的SHA1算法将ComputeHash转换为Java

使用C#中的SHA1算法将ComputeHash转换为Java,java,c#,encryption,sha1,Java,C#,Encryption,Sha1,我有一个用C#中的SHA1算法加密字符串的函数。现在我想把它转换成Java语言。我已经尝试过了,但是对于C#和Java,我没有得到相同的输出 有人请帮我转换一下。对此我真的很感激。谢谢 以下是C#代码: 公共静态字符串计算哈希(字符串指令){ SHA1 sh=SHA1.Create(); byte[]data=UTF8Encoding.UTF8.GetBytes(inString); 字节[]结果=sh.ComputeHash(数据); 返回到hextstring(结果); } 公共静态字符串到

我有一个用C#中的SHA1算法加密字符串的函数。现在我想把它转换成Java语言。我已经尝试过了,但是对于C#和Java,我没有得到相同的输出

有人请帮我转换一下。对此我真的很感激。谢谢

以下是C#代码:

公共静态字符串计算哈希(字符串指令){
SHA1 sh=SHA1.Create();
byte[]data=UTF8Encoding.UTF8.GetBytes(inString);
字节[]结果=sh.ComputeHash(数据);
返回到hextstring(结果);
}
公共静态字符串到十六进制字符串(字节[]数据){
字符串s=“”;
for(int i=0,n=data.Length;i
我更改了代码,得到了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


谢谢Schena先生,我在你的评论中找到了我的解决方案。非常感谢

正如旁注:SHA1不再安全,可能是您已经尝试过的内容的副本,您卡在哪里了?您好,欢迎来到StackOverflow。如果你想理解为什么你的Java代码会产生不同的输出,你应该编辑你的文章,把Java代码和一个简单的测试输入字符串以及你从这两段代码中得到的输出一起包括进来。有关提出有效问题的更多提示,请参阅和。另一方面,如果你只是想要一些Java代码可以工作,那么有很多贴有“Java”和“sha1”标签的帖子…
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;
}