Click here to Skip to main content
15,892,737 members
Articles / Security / Cryptography
Tip/Trick

Sha1 Hash generation Tool using C#.NET

Rate me:
Please Sign up or sign in to vote.
5.00/5 (2 votes)
30 Sep 2010CPOL 31.5K   4   2
The sha1 hash generation tool can be used to generate hashes on a file. The has generated can be outputted in the form of dig/Hex/Base64. You may use this utility to verify the integrity of the file transported over internet to make sure they are safe from tampering.
Using the code:
The complete code is given below. The enum EncodeStyle is used to determine what encoding should be applied on output hash value. SHA1HashEncode is the main utility function which uses SHA1CryptoServiceProvider class to provide hashing. This function takes two input arguments 1) path of file which need to be hashed and 2) encoding style of outputed hash value. Call this function from your main program.

C#
using System;
using System.IO;
using System.Security.Cryptography;

public enum EncodeStyle
{
  Dig,
  Hex,
  Base64
};

static string ByteArrayToString(byte[] arrInput, EncodeStyle encode)
{
  int i;
  StringBuilder sOutput = new StringBuilder(arrInput.Length);
  if(EncodeStyle.Base64 == encode)
  {
     return Convert.ToBase64String(arrInput);
  }
  for (i = 0; i < arrInput.Length; i++)
  {
    switch(encode)
    {
       case EncodeStyle.Dig:
       //encode to decimal with 3 digits so 7 will be 007 (as range of 8 bit is 127 to -128)
       sOutput.Append(arrInput[i].ToString("D3"));
       break;
       case EncodeStyle.Hex:
       sOutput.Append(arrInput[i].ToString("X2"));
       break;
    }
  }
  return sOutput.ToString();
}

static string SHA1HashEncode(string filePath, EncodeStyle encode)
{
  SHA1 a = new SHA1CryptoServiceProvider();
  byte[] arr = new byte[60];
  string hash = "";
  using (StreamReader sr = new StreamReader(filePath))
  {
     arr = a.ComputeHash(sr.BaseStream);
     hash = ByteArrayToString(arr, encode);
  }
  return hash;
}

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Unknown
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions

 
Suggestionarr = a.ComputeHash(ASCIIEncoding.ASCII.GetBytes(filePath)); Pin
durdogu1230-Aug-13 1:10
durdogu1230-Aug-13 1:10 
GeneralReason for my vote of 5 Compact and it works. Better than wr... Pin
DuffmanLight25-Jan-12 14:29
DuffmanLight25-Jan-12 14:29 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.