c#,MD5加密,用私钥对文本进行RSA2方式加密

MD5

        /// <summary>
        /// MD5加密,32位
        /// </summary>
        /// <param name="news1">需要加密的文本</param>
        /// <param name="input_charset">"utf-8"</param>
        /// <returns></returns>
        public static string GetMD5_32(string news1, string input_charset)
        {
            MD5 md5 = MD5.Create();
            byte[] t = md5.ComputeHash(Encoding.GetEncoding(input_charset).GetBytes(news1));
            StringBuilder stringBuilder = new StringBuilder();
            for (int i = 0; i < t.Length; i++)
            {
                stringBuilder.Append(t[i].ToString("x").PadLeft(2, '0'));
            }
            return stringBuilder.ToString();
        }

RSA签名

        /// <summary>
        /// 利用私钥对消息进行RSA2加密
        /// </summary>
        /// <param name="PrivateKey">私钥</param>
        /// <param name="news">消息</param>
        /// <returns></returns>
        public static string GetSign(string PrivateKey, string news)
        {
            if (PrivateKey.StartsWith("M"))//如果是.java格式则先转换为.net格式
            {
                PrivateKey = RSAPrivateKeyJava2DotNet(PrivateKey);
            }
            //根据需要加签时的哈希算法转化成对应的hash字符节
            byte[] bt = Encoding.GetEncoding("utf-8").GetBytes(news);
            var sha256 = new SHA256CryptoServiceProvider();//此
            byte[] rgbHash = sha256.ComputeHash(bt);

            RSACryptoServiceProvider RSACSP = new RSACryptoServiceProvider();
            RSACSP.FromXmlString(PrivateKey);
            RSAPKCS1SignatureFormatter formatter = new RSAPKCS1SignatureFormatter(RSACSP);
            formatter.SetHashAlgorithm("SHA256");//此处加签的hash算法,需要和上边计算的hash值的算法一致,不然会报错。
            byte[] inArray = formatter.CreateSignature(rgbHash);
            return Convert.ToBase64String(inArray);
        }

对传入字符串m_strSource进行md5哈希加密:

        public string GetHash(string m_strSource)//对传入字符串m_strSource进行md5加密。
        {
            //HashAlgorithm.Create(String)方法创建 HashAlgorithm 类的实现的实例。参数的有效值包括:"MD5"、"SHA"等标准哈希
            //函数的名称,使用HashAlgorithm.Create("MD5")与MD5CryptoServiceProvider的效果等价。
            HashAlgorithm algorithm = HashAlgorithm.Create("MD5");//创建哈希算法的指定实现的实例
            byte[] bytes = new UnicodeEncoding().GetBytes(m_strSource);//包含对指定字符集编码的结果
            byte[] inArray = algorithm.ComputeHash(bytes);//计算8位无符号整数字节数组的hash值
            return Convert.ToBase64String(inArray);//将8位无符号整数的数组转换为其用Base64数字编码的等效字符串表示形式
        }
  • 12
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值