SHA1CryptoServiceProvider and SHA1Managed return different results

3

I need to encrypt a string using SHA1. I was able to encrypt using the SHA1 class in this way:

 public string CriptSha1(string secret)
        {

            string result = "";

            byte[] key = System.Text.Encoding.UTF8.GetBytes(secret);

            SHA1 sha1 = SHA1Managed.Create();

            byte[] hash = sha1.ComputeHash(key);

            foreach (byte b in hash)
            {
                result += b.ToString();
            }

            return result;
        }

If by chance I encrypt the word teste the output I have is:

  

4611115513881331821151451031201166997127855811595

Now if I encrypt using the SHA1CryptoServiceProvider class like this:

SHA1CryptoServiceProvider cryptTransformSHA1 = new SHA1CryptoServiceProvider();

byte[] buffer = Encoding.UTF8.GetBytes(secret);
string hashSecret = BitConverter.ToString(cryptoTransformSHA1.ComputeHash(buffer)).Replace("-","");

The output I have is:

  

2E6F9B0D5885B6010F9167787445617F553A735F

Can anyone tell me why? or what is the difference of these classes?

    
asked by anonymous 26.06.2015 / 23:10

1 answer

0

Your first code is incomplete, it just returns the bytes and is not converting them.

This line:

result += b.ToString();

It should convert to hexadecimal, like this:

result += b.ToString("X2");
  

2E6F9B0D5885B6010F9167787445617F553A735F

Ideone Example

    
27.06.2015 / 00:01