Friday, July 2, 2010

C#上的HMAC-SHA1加密

在C#裡,要使用MD5或是SHA1加密,可以使用FormsAuthentication.HashPasswordForStoringInConfigFile 方法很簡單的做到(當然要自己寫也可以),但是要使用HMAC-SHA1加密就沒那麼簡單了。

簡單分享一下我的作法

public static string HMACSHA1Text(string EncryptText, string EncryptKey)
{
HMACSHA1 hmacsha1 = new HMACSHA1();
hmacsha1.Key = System.Text.Encoding.ASCII.GetBytes(EncryptKey);
byte[] dataBuffer = System.Text.Encoding.ASCII.GetBytes(EncryptText);
byte[] hashBytes = hmacsha1.ComputeHash(dataBuffer);
return Convert.ToBase64String(hashBytes);
}


傳入值為(須加密字串,加密金鑰字串),輸出為轉成Base64形式的字串。

記得要using System.Security.Cryptography;

3 comments:

  1. 剛剛試了一下
    第四行 hmacsha1.Key = System.Text.Encoding.ASCII.GetBytes(EncryptKey);
    我是這樣寫才會過
    有反向運算的方式嗎??

    感謝分享

    ReplyDelete
  2. 那個應該是你沒有using System.Text;的關係,我修改一下內文好了,解密的我因為沒用到所以沒寫XDDD 有空再貼上來

    ReplyDelete
  3. 感恩,剛好需要用到 ^__^

    ReplyDelete