2013-03-18 4 views
8

Wymagam pewnej logicznej enkrypcji wykonanej w Javie do przekonwertowania w C# fragment kodu java jest następujący.Java MessageDigest klasa w C#

Jaki byłby ekwiwalent C# dla funkcji update(), Digest i reset?

Odpowiedz

7

W języku C# klasa to HashAlgorithm.

Równowartość zaktualizować jest albo TransformBlock(...) lub TransformFinalBlock(...) po ostatecznej wersji blok nazywa się (można też użyć pustego wkładu) można wywołać właściwość Hash który daje wartość strawienia.

HashAlgorithm może być wielokrotnego użytku po końcowy blok nazywa się (co oznacza, że ​​jest resetowany na następny raz dzwonisz TransformBlock), można dokładnie sprawdzić, czy HashAlogrithm obsługuje ponowne wcale sprawdzając właściwość CanReuseTransform.

Odpowiednikiem combo reset()/digest() jest jedna linia byte[] ComputerHash(byte[]).

-1
try { 
     MessageDigest md = MessageDigest.getInstance("SHA-1"); 
     md.update(password.getBytes()); 
     BigInteger hash = new BigInteger(1, md.digest()); 
     hashword = hash.toString(16); 
} catch (NoSuchAlgorithmException ex) { 
     /* error handling */ 
} 
return hashword; 
public static string HashPassword(string input) 
{ 
    var sha1 = SHA1Managed.Create(); 
    byte[] inputBytes = Encoding.ASCII.GetBytes(input); 
    byte[] outputBytes = sha1.ComputeHash(inputBytes); 
    return BitConverter.ToString(outputBytes).Replace("-", "").ToLower(); 
} 
0

Dla Digest w C#, podobnie jak Java, można użyć klasy Windows.Security.Cryptography.Core. Na przykład, następujący sposób powraca do mieszania SHA256, sformatowanych base64:

public static string sha256Hash(string data) 
{ 
    // create buffer and specify encoding format (here utf8) 
    IBuffer input = CryptographicBuffer.ConvertStringToBinary(data, 
    BinaryStringEncoding.Utf8); 

    // select algorithm 
    var hasher = HashAlgorithmProvider.OpenAlgorithm("SHA256"); 
    IBuffer hashed = hasher.HashData(input); 

    // return hash in base64 format 
    return CryptographicBuffer.EncodeToBase64String(hashed); 
} 

patrz (mbrit) How to create SHA-256 hashes in WinRT?