Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.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
SHA256从Java到C#_Java_C#_Sha_Sha256_Message Digest - Fatal编程技术网

SHA256从Java到C#

SHA256从Java到C#,java,c#,sha,sha256,message-digest,Java,C#,Sha,Sha256,Message Digest,我正在尝试为下面的函数创建从Java到C的等效代码: public static String SHA256 (List<String> parametros, String clave) { try { MessageDigest sha = MessageDigest.getInstance("SHA-256"); for(String param:parametros){ byte p[] = new byte[param.length()]

我正在尝试为下面的函数创建从Java到C的等效代码:

public static String SHA256 (List<String> parametros, String clave) 

{
try {
    MessageDigest sha = MessageDigest.getInstance("SHA-256");
    for(String param:parametros){
        byte p[] = new byte[param.length()];
        p = param.getBytes();
        sha.update(p);
    }
    byte bClave[] = new byte[clave.length()];
    bClave = clave.getBytes();
    byte[] hash = sha.digest(bClave);
    return ( hexString256 (hash));
   }catch (NoSuchAlgorithmException e){
   return ("Error");
  }
}
公共静态字符串SHA256(列出参数、字符串clave)
{
试一试{
MessageDigest sha=MessageDigest.getInstance(“sha-256”);
用于(字符串参数:parametros){
字节p[]=新字节[param.length()];
p=param.getBytes();
sha.更新(p);
}
字节bClave[]=新字节[clave.length()];
bClave=clave.getBytes();
字节[]散列=sha.digest(bClave);
返回(hexString256(散列));
}捕获(无算法异常){
返回(“错误”);
}
}

任何关于
sha.update的建议(p)行?

如果只是计算一些数据的SHA-256散列,这可能会给出一些想法:

// using System.Security.Cryptography;
public static string ComputeHashSha256(byte[] toBeHashed)
{
    using (var sha256 = SHA256.Create())
    {
        return Encoding.UTF8.GetString(sha256.ComputeHash(toBeHashed));
    }
}
更新:

如果目标是在串联列表字符串后计算它们的哈希值,则可以使用其他方法,如(或者,如果愿意,可以将两者合并为一个):

公共静态字符串计算ha256hashofalistofstring(列表参数)
{
var concatted=string.Join(string.Empty,参数);
var byteOfConcatedString=Encoding.UTF8.GetBytes(concatted);
返回ComputeHashA256(字节数ConcattedString);
}

请注意,我只是想让这个示例成为您的一个指针,因为我不知道上面的Java代码到底做了什么,但我希望它能有所帮助。

在这种情况下,我想计算字符串数组的哈希值。我应该合并所有字节数组,然后计算散列吗?@ErnestoRodriguez我更新了答案。我希望有帮助。
public static string ComputeSHA256HashOfAListOfStrings(List<string> parameters)
{
    var concatted = string.Join(string.Empty, parameters);
    var byteOfConcattedString = Encoding.UTF8.GetBytes(concatted);
    return ComputeHashSha256(byteOfConcattedString);
}