C# md5签名与验签

直接看图吧~~

 /// <summary>
        /// 请求MD5
        /// </summary>
        /// <returns></returns>
        public void RequestSignMD5() 
        {
            //  请求
            String apiKey = "apiKey";                                       // 约定的秘钥1
            String apiSecret = "apiSecret";                                 // 约定的秘钥2
            String timeStamp = DateTime.Now.ToString("yyyyMMddHHmmss");     // 约定的秘钥3

            String signData = apiKey + apiSecret + timeStamp;   // 秘钥串
            String parameter = "THIS IS PARAMETER!";            // 参数串
            String SignParameterMD5 = parameter + signData;
            String MD5Str = md5(SignParameterMD5);              // 生成MD5
            bool IsTrue = ResponseSignMD5(parameter, MD5Str, timeStamp);    //验签成功则为TRUE
        }
        /// <summary>
        /// 响应MD5
        /// </summary>
        /// <param name="parameter">参数串</param>
        /// <param name="MD5Data">MD5</param>
        /// <param name="timeStamp">时间戳</param>
        /// <returns></returns>
        public bool ResponseSignMD5(String parameter, String MD5Data,String timeStamp)
        {
            //  响应
            String apiKey = "apiKey";                           // 约定的秘钥1
            String apiSecret = "apiSecret";                     // 约定的秘钥2


            String signData = apiKey + apiSecret + timeStamp;   // 秘钥串(拼接约定的秘钥形成秘钥串)
            String SignParameterMD5 = parameter + signData;
            String MD5Str = md5(SignParameterMD5);              // 生成MD5
            if (MD5Str == MD5Data) //   验签成功
            {
                return true;
            }
            return false;
        }
        /// <summary>
        /// 生成MD5
        /// </summary>
        /// <param name="str"></param>
        /// <returns></returns>
        public string md5(string str)
        {
            try
            {
                MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
                byte[] bytValue, bytHash;
                bytValue = System.Text.Encoding.UTF8.GetBytes(str);
                bytHash = md5.ComputeHash(bytValue);
                md5.Clear();
                string sTemp = "";
                for (int i = 0; i < bytHash.Length; i++)
                {
                    sTemp += bytHash[i].ToString("X").PadLeft(2, '0');
                }
                str = sTemp.ToLower();
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }

            return str;
        }

签名:
String MD5Str = MD5(参数串 + 秘钥串)
请求参数(参数串 + MD5Str)

验签:
接收参数(参数串 + MD5Str)

// 开始根据参数串 + 约定好的秘钥串生成MD5
String SignData = MD5(参数串 + 秘钥串(拼接约定好的秘钥))

// 进行MD5的对比,结果为TRUE则验签成功
Bool isTrue = SignData == MD5Str

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值