HOW-TO: Generate hash in windows store apps

This post shows how to generate hash using SHA1 algorithm in windows store apps, useful if your app makes calls to rest api’s that require app to pass an api signature as header or querystring

 

Import following namespaces 

 using Windows.Security.Cryptography;
using Windows.Security.Cryptography.Core;
using Windows.Storage.Streams;

 

Convert the string to binary

 

 IBuffer buffer = CryptographicBuffer.ConvertStringToBinary(text, BinaryStringEncoding.Utf8);

Create the hash

 

 HashAlgorithmProvider provider = HashAlgorithmProvider.OpenAlgorithm(HashAlgorithmNames.Sha1);
 //hash it
 IBuffer hash = provider.HashData(buffer);

Create a base64 encoded string

 CryptographicBuffer.EncodeToBase64String(hash);

Base64 encoded string can be used as API signature

 

You can wrap this functionality into a nice helper class and reuse, see full code below 

 using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
 using Windows.Security.Cryptography;
 using Windows.Security.Cryptography.Core;
 using Windows.Storage.Streams;
  
 
     internal static class Helper
     {
         public static string ComputeHash(string text)
         {
             string base64Encoded = string.Empty;
             IBuffer buffer = CryptographicBuffer.ConvertStringToBinary(text, BinaryStringEncoding.Utf8);
             HashAlgorithmProvider provider = HashAlgorithmProvider.OpenAlgorithm(HashAlgorithmNames.Sha1);
             //hash it
             IBuffer hash = provider.HashData(buffer);
             base64Encoded = CryptographicBuffer.EncodeToBase64String(hash);
             return base64Encoded;
         }
         
     }

Cheers,

</Ram>