C# 证书签名

最近做webservice一直不顺,总结一下遇到的问题

1.证书签名。

由于发送的是XML报文数据,所以服务器端会根据证书签名验证发送的信息。就是客户端进行证书的私钥签名,服务器端进行公钥验证。

证书文件是.pfx格式的,包含私钥。

服务器端要求签名数据先进行MD5加密,再进行base64编码。

using System.Security.Cryptography.X509Certificates;//证书文件类

 

/// <summary>
        
/// 获取签名
        
/// </summary>
        
/// <param name="signsrc">将要签名的数据</param>
        
/// <returns>已签名的数据</returns>
        public string GetSign(string signsrc)
        {
            try
            {
                
                //创建证书文件
                X509Certificate2 objx5092 = new X509Certificate2(System.Web.HttpContext.Current.Server.MapPath("/Webservice/123.pfx"), "123");

                //取出私钥
                System.Security.Cryptography.RSACryptoServiceProvider rsa = objx5092.PrivateKey as System.Security.Cryptography.RSACryptoServiceProvider;
                //将要签名的要素转化为byte[]
                byte[] data = Encoding.ASCII.GetBytes(signsrc);
                //md5 你懂的 返回byte[]
                byte[] bb = rsa.SignData(data, "MD5");
                //将md5 之后的数据进行base64编码 必须的 返回的就是已签名的数据 
                string strData = System.Convert.ToBase64String(bb);
                return strData;
            }
            catch
            {
                return "";
            }

} 

        

posted @ 2012-05-18 09:52  仰望繁星的猪  阅读(1531)  评论(0编辑  收藏  举报