c# sha256withrsa 算法 rsa公钥私钥 源码

公钥和私钥 生成地址:http://www.metools.info/code/c80.html

using System;
using System.IO;
using System.IO.Compression;
using System.Net;
using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;
using System.Text;

namespace ConsoleApp2
{
    class Program
    {

       static string eventId = "A57";
        static string userId = "330421998";
        static string password = "jsyz330421998#zyb";
        static string requestTime = DateTime.Now.ToString("yyyy-MM-ddHH:mm:ss");
        static string headSign = "";
        static void Main(string[] args)
        {
           

            string str = eventId + requestTime + userId+password;
            headSign = GenerateMD5(str);
            /// <summary>
            /// 发送数据
            /// </summary>
             string postText = @"<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/' xmlns:ser='http://server.zhejian.com/'>
            <soapenv:Header/>
   <soapenv:Body>
      <ser:all>
         <!--Optional:-->
          <arg0><![CDATA[<?xml version='1.0' encoding='UTF-8'?>
<data>
<header>
<eventId>" + eventId + @"</eventId>
<hosId>" + userId + @"</hosId>
<requestTime>" + requestTime + @"</requestTime>
<headSign>" + headSign + @"</headSign>
<bodySign>" + RsaSign(body, privateKey) + @"</bodySign>
</header>" + body + @"</data>]]></arg0>
      </ser:all>
   </soapenv:Body>
</soapenv:Envelope>";
            Console.WriteLine(headSign);
            //SendPostRequestJson(postText);
           var result= PostWebRequest("http://120.26.209.208:8083/data/ws/TJ?wsdl", postText,Encoding.UTF8);
            Console.WriteLine(result);

            Console.ReadLine();
        }

        private static string PostWebRequest(string postUrl, string paramData, Encoding dataEncode)
        {
            string ret = string.Empty;
            try
            {
                byte[] byteArray = dataEncode.GetBytes(paramData); //转化
                HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(new Uri(postUrl));
                webReq.Method = "POST";
                webReq.ContentType = "application/x-www-form-urlencoded";

                webReq.ContentLength = byteArray.Length;
                Stream newStream = webReq.GetRequestStream();
                newStream.Write(byteArray, 0, byteArray.Length);//写入参数
                newStream.Close();
                HttpWebResponse response = (HttpWebResponse)webReq.GetResponse();
                StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.Default);
                ret = sr.ReadToEnd();
                sr.Close();
                response.Close();
                newStream.Close();
            }
            catch (Exception ex)
            {
            }
            return ret;
        }
       
        /// <summary>
        /// 
        /// </summary>
        /// <param name="data"></param>
        /// <param name="privatekey"></param>
        /// <returns></returns>
        public static string RsaSign(string data, string privatekey)
        {
            CspParameters CspParameters = new CspParameters();
            RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(2048, CspParameters);
            byte[] bytes = Encoding.UTF8.GetBytes(data);
            privatekey = RSA.ToXmlString(true);
            RSA.FromXmlString(privatekey);
            byte[] sign = RSA.SignData(bytes, "SHA256");

            return Convert.ToBase64String(sign);
        }
      
        public static string Sign(string contentForSign, string privateKey)
        {
            //转换成适用于.Net的秘钥
            //var netKey = privateKey;
          

            var rsa = new RSACryptoServiceProvider();
            privateKey = rsa.ToXmlString(true);
            rsa.FromXmlString(privateKey);
            
            //创建一个空对象
            var rsaClear = new RSACryptoServiceProvider();
            var paras = rsa.ExportParameters(true);
            rsaClear.ImportParameters(paras);
            //签名返回
            using (var sha256 = new SHA256CryptoServiceProvider())
            {
                var signData = rsa.SignData(Encoding.UTF8.GetBytes(contentForSign), sha256);
                return EncodeBase64("utf-8", BytesToHex(signData));
            }
        }
        ///编码
        public static string EncodeBase64(string code_type, string code)
        {
            string encode = "";
            byte[] bytes = Encoding.GetEncoding(code_type).GetBytes(code);
            try
            {
                encode = Convert.ToBase64String(bytes);
            }
            catch
            {
                encode = code;
            }
            return encode;
        }
        public static string BytesToHex(byte[] data)
        {
            StringBuilder sbRet = new StringBuilder(data.Length * 2);
            for (int i = 0; i < data.Length; i++)
            {
                sbRet.Append(Convert.ToString(data[i], 16).PadLeft(2, '0'));
            }
            return sbRet.ToString();
        }
        #region  测试字符串
   

        /// <summary>
        /// 私钥
        /// </summary>
        static string privateKey = @"MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCl7G6LVrBEipA2Otcc6Ot/+xFUDXxaw2Vw57PWiDrLOUtL7ASEy5q9JKpt3E5YlxBwrHZasY6T9FAOtqK81YTJ1auZWxGgdXo0UygXwWxwtcbM6Mu2iKuMCMi1/yj23Htf6Q0e9/9N1Puik7iLF579AMvdpqlCih09cE41itM7DldOJbt9s0iqgJEXX/tmE83yXnX3E3cpuBDDsFRyB2Z4EMEpSlc1fxwQPOzt9aw2IF81gjNpkZ5ugGqAWbn89JO1rFpdrEVQVJDZbcq/2RacGRf+0BD0P1SuigRRT1W8mg1Ne57hFi9Lw9FaDTRYzKsVvkAk9euwRfwMkb+BgvDVAgMBAAECggEBAIEWzXqC22i4FTLb3HiVjoNnpjeqtlE3LDkHS5dhLbzmuno7Cdj3P1Bgsmf+usWZ4iSHSR2OfssFjTOlTD92L3WIU5VgkPox6/3BpLO2vNOD2UOa6sL82dp9CwrtlcVaDHK2MoshjvPS/GOkYjN1ETDt6a5s98rZAZ7HPVHSzDxozziGIc+py22MLmMcSx2bfZ0rAVOzf1Fk6/I3Fw4O5hMQJovfz6m73LMaKJ1dvy2qTMSpi71N6FNEaPxlaP0RpjrMga/NsvgxOxM7tTKfE/6+CHQvS9og0jjZS/t3PLpBbcGj1RlLPonUU6di6oU9FA3Y59RjXpB2aD03fvojnBECgYEAz1un2IF6qIJWyIv7lRR7iZAUtxSnikCjh2xz0/ufGNJEvmRjM7mVbKip7J5Qyvqo4AvqwrF6pYe2Cp7TILeMk3JC9PHD8JWXpM0LV2Ml2fMOT+tFlDwD3IDDuG2Fphib11qeMO0+wZkZ3f4MLKbjGKY9Fix6y0WBtcftZGmNSwMCgYEAzNiJmn8BM16mmbv1uvWuYfFq6RXuRSGc9GNpXHe+QjC9uT6ddLFL1uStjXU6Vf+r+1ymwwFs1vSA7d1ljhKFukVySmNVylOwtxY2GtgMrJg+DtFy1DwilawuLrSEGNQkP4h0176zI5sSZUrmfZo3Xh/UcLy3rr9KtSYtXLZNYUcCgYAY+FyaAd2XdTqmI9VD+pd11VfpRB940pfesvyvxlk+T/PfSY94pxyLXTQ5PkdUaiLz9/tpPp4aWOFfHgkmo3PWPag6fvKtghYkzlxTRalFObO7hAV4+FEuuILZLrctbUE3Cb6K/cbU4W7wAKvOpLosObiZdvnCiLg5/71iniNZqQKBgQC9QIFA3324fAXnmqPYawsFKgnf9ocAD6H2l7HL4EVC2c0uzA6ktPigPP2q51dSBLhbrqnTGAn6PkKvgBBHRg2OnoKM/2FPYCqvvDGYc2qiOrV68z7nnfdF2KGCPPyeA8DJgcSRXnoatzYzpxNzj3r/1uBql7AMHmdjHTZjpXmwGQKBgDJZjh4TofdulpU3PWOQfLLQUOtCePkjhQtQI06Buz25Ouk+DIMgRxwGnA44YX9kogAas78c32FdjT6Uyp";

        /// <summary>
        /// 代加签文本
        /// </summary>
        static string body = @"<body>hello</body>";
        #endregion
        /// <summary>
        /// MD5字符串加密
        /// </summary>
        /// <param name="txt"></param>
        /// <returns>加密后字符串</returns>
        public static string GenerateMD5(string txt)
        {
            using (MD5 mi = MD5.Create())
            {
                byte[] buffer = Encoding.Default.GetBytes(txt);
                //开始加密
                byte[] newBuffer = mi.ComputeHash(buffer);
                StringBuilder sb = new StringBuilder();
                for (int i = 0; i < newBuffer.Length; i++)
                {
                    sb.Append(newBuffer[i].ToString("x2"));
                }
                return sb.ToString();
            }
        }
    }

}

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值