C# 微信支付 HMACSHA256 簽名


sha256_HMAC加密

message 消息 secret 秘鑰

對參數按照key=value的格式,生成字符串

string sign = Encrypt("key", mchkey); //mchkey為商戶秘鑰key

public static string Encrypt(string key, string value,Dictionary<string,object> dictionary)
{
	StringBuilder sb = new StringBuilder();
    ArrayList akeys = new ArrayList(this.parameters.Keys);
    akeys.Sort();
    foreach (string k in akeys)
    {
        var v = (string)this.parameters[k];
        if (null != v && "".CompareTo(v) != 0 && "sign".CompareTo(k) != 0 && "key".CompareTo(k) != 0)
        {
            sb.Append(k + "=" + v + "&");
        }
    }
    sb.Append(key + "=" + value);
    string sign = Hmac_SHA256.GetHash(sb.ToString(), value);
    return sign;
}

HMACSHA256 加密

public static string GetHash(string message, string secret)
{
    string result = "";
    var enc = Encoding.UTF8;
    byte[]
        baText2BHashed = enc.GetBytes(message),
    baSalt = enc.GetBytes(secret);
    System.Security.Cryptography.HMACSHA256 hasher = new HMACSHA256(baSalt);
    byte[] baHashedText = hasher.ComputeHash(baText2BHashed);
    result = string.Join("", baHashedText.ToList().Select(b => b.ToString("x2")).ToArray());
    return result.ToUpper();//一定要轉化為大寫
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM