C# 获取 sha256

C# 获取 sha256, 输入可以是 字符串,也可以是 字节流流:

自定义的输入类型的枚举:

        public enum Sha26ParseType
        {
            StringType,
            StreamType
        }

 

核心代码:

    public static string general_sha256_code(string str, Sha26ParseType type) {
            string result = string.Empty;
            byte[] by = null;
            //求字节流的SHA256
            if (type.Equals(Sha26ParseType.StreamType)) {
                if (!System.IO.File.Exists(str))
                    return result;

                System.IO.FileStream stream = new System.IO.FileStream(str, System.IO.FileMode.Open, System.IO.FileAccess.Read);
                System.Security.Cryptography.SHA256Managed Sha256 = new System.Security.Cryptography.SHA256Managed();
                by = Sha256.ComputeHash(stream);
                stream.Close();
            }
            //求字符串的SHA256
            else {
                byte[] SHA256Data = Encoding.UTF8.GetBytes(str);

                System.Security.Cryptography.SHA256Managed Sha256 = new System.Security.Cryptography.SHA256Managed();
                by = Sha256.ComputeHash(SHA256Data);
            }

            result = BitConverter.ToString(by).Replace("-", "").ToLower(); //64
            //return Convert.ToBase64String(by);                         //44

            return result;
        }

 



 

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、付费专栏及课程。

余额充值