System.Security.Cryptography (mscorlib.dll)abstract class
public abstract class HashAlgorithm : ICryptoTransform, IDisposable {
// Protected Constructors
   protected HashAlgorithm(  );
// Protected Instance Fields
   protected int HashSizeValue;
   protected byte[  ] HashValue;
   protected int State;
// Public Instance Properties
   public virtual bool CanReuseTransform{get;
 // implements ICryptoTransform
   public virtual bool CanTransformMultipleBlocks{get;
 // implements ICryptoTransform
   public virtual byte[  ] Hash{get; }
   public virtual int HashSize{get; }
   public virtual int InputBlockSize{get;
 // implements ICryptoTransform
   public virtual int OutputBlockSize{get;
 // implements ICryptoTransform
// Public Static Methods
   public static HashAlgorithm Create(  );
   public static HashAlgorithm Create(string hashName);
// Public Instance Methods
   public void Clear(  );
   public byte[  ] ComputeHash(byte[  ] buffer);
   public byte[  ] ComputeHash(byte[  ] buffer, int offset, int count);
   public byte[  ] ComputeHash(System.IO.Stream inputStream);
   public abstract void Initialize(  );
   public int TransformBlock(byte[  ] inputBuffer,  int inputOffset, 
       int inputCount, byte[  ] outputBuffer, int outputOffset);
// implements ICryptoTransform
   public byte[  ] TransformFinalBlock(byte[  ] inputBuffer, int inputOffset, int inputCount);
// implements ICryptoTransform
// Protected Instance Methods
   protected virtual void Dispose(bool disposing);
   protected abstract void HashCore(byte[  ] array, int ibStart, int cbSize);
   protected abstract byte[  ] HashFinal(  );

A hash algorithm processes data to create a fixed-length string, known as a hash code. Hash algorithms are useful because it is difficult to find two sets of data that result in the same hash code; hash algorithms are an important part of the process to create digital signatures and are used to ensure data integrity.

All hash algorithm implementations inherit from this abstract class. Implementation classes are instantiated using the Create( ) method, which accepts the name of an implementation as a String argument. The default algorithm is created if no implementation name is specified; the system administrator can configure the default algorithm.

The ComputeHash( ) method generates a hash code by either processing a Byte array or by reading data from a Stream.


KeyedHashAlgorithm, MD5, SHA1, SHA256, SHA384, SHA512

Returned By

SignatureDescription.CreateDigest( ), System.Security.Policy.HashMembershipCondition.HashAlgorithm

Passed To

AsymmetricSignatureDeformatter.VerifySignature( ), AsymmetricSignatureFormatter.CreateSignature( ), System.Security.Policy.Hash.GenerateHash( ), System.Security.Policy.HashMembershipCondition.{HashAlgorithm, HashMembershipCondition( )}

    Part V: API Quick Reference