Java MessageDigest class in C#

In C#, the class is HashAlgorithm.

The equivalent to update is either TransformBlock(...) or TransformFinalBlock(...), after the final block version is called (you can also use an empty input) you can call the Hash property that will give you the digest value.

HashAlgorithm is likely to be reusable after final block is called (which means it is reset for the next time you call TransformBlock), you can double check if your HashAlgorithm supports reusing at all by checking the property CanReuseTransform.

The equivalent to your reset()/digest() combo is a one line byte[] ComputeHash(byte[]).


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();
}

Tags:

C#

Encryption