C#根据秘钥用SHA256+RSA的方式进行加密

C#根据秘钥用SHA256+RSA的方式进行加密

        /// <summary>
        /// 加签
        /// </summary>
        /// <param name="contentForSign"></param>
        /// <param name="privateKey"></param>
        /// <returns></returns>
        public static string Sign(string contentForSign, string privateKey)
        {
            //转换成适用于.Net的秘钥
            RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
            rsa.FromPrivateKeyJavaString(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 BytesToHex(signData);
            }
        }


        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();
        }

参考文章链接https://www.cnblogs.com/caihuaxing/p/14439668.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SHA256RSA是一种数字签名算法,它使用SHA256哈希函数和RSA加密算法来生成数字签名。在C#中,可以使用RSACryptoServiceProvider类来实现SHA256RSA数字签名算法。下面是一个示例代码,演示如何使用C#实现SHA256RSA数字签名算法: ```csharp using System;using System.Security.Cryptography; using System.Text; class Program { static void Main(string[] args) { // 创建RSA对 using (var rsa = new RSACryptoServiceProvider()) { // 获取私 var privateKey = rsa.ExportParameters(true); // 获取公 var publicKey = rsa.ExportParameters(false); // 要签名的数据 var data = "Hello, world!"; // 计算数据的SHA256哈希值 var sha256 = SHA256.Create(); var hash = sha256.ComputeHash(Encoding.UTF8.GetBytes(data)); // 使用私对哈希值进行数字签名 var signature = SignData(hash, privateKey); // 使用公验证数字签名 var isValid = VerifyData(hash, signature, publicKey); Console.WriteLine("Data: {0}", data); Console.WriteLine("Signature: {0}", Convert.ToBase64String(signature)); Console.WriteLine("Is valid: {0}", isValid); } } // 使用RSA对数据进行数字签名 static byte[] SignData(byte[] data, RSAParameters privateKey) { using (var rsa = new RSACryptoServiceProvider()) { rsa.ImportParameters(privateKey); return rsa.SignData(data, SHA256.Create()); } } // 使用RSA验证数字签名 static bool VerifyData(byte[] data, byte[] signature, RSAParameters publicKey) { using (var rsa = new RSACryptoServiceProvider()) { rsa.ImportParameters(publicKey); return rsa.VerifyData(data, SHA256.Create(), signature); } } } ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值