2015-07-15 2 views
1

я пытаюсь создать эквивалентный код из Java в C# для функции ниже:SHA 256 из 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"); 
    } 
} 

Любые предложения по sha.update(p); линии?

ответ

1

Если это просто о вычислении SHA-256 хэш некоторых данных может быть, это даст некоторое представление:

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

UPDATE:

Если цель состоит в том, чтобы вычислить хэш список строк после конкатенации их вы можете использовать дополнительный метод, как (или объединить их обоих в одной единице, если вы хотите):

public static string ComputeSHA256HashOfAListOfStrings(List<string> parameters) 
{ 
    var concatted = string.Join(string.Empty, parameters); 
    var byteOfConcattedString = Encoding.UTF8.GetBytes(concatted); 
    return ComputeHashSha256(byteOfConcattedString); 
} 

Пожалуйста, обратите внимание, я просто имел в виду этот пример, чтобы быть указатель для вас, потому что я точно не знаю, что делает Java-код выше, но я надеюсь, что это немного поможет.

+0

В этом случае я хотел бы вычислить хэш для строкового массива. Должен ли я объединить все массивы байтов, а затем вычислить хэш? –

+0

@ErnestoRodriguez Я обновил свой ответ. Я надеюсь, что это помогает. –