C#几个成对使用方法积累

103 阅读1分钟

一 字符串base64格式和还原

1.1 base64格式

  public static string GetStringToBase64(string input)
        {

            // 将输入字符串转换为字节数组
            byte[] inputBytes = Encoding.UTF8.GetBytes(input);

            // 计算输入字节数组的哈希值
           // byte[] hashBytes = algorithm.ComputeHash(inputBytes);

            // 将哈希值字节数组转换为字符串
            //StringBuilder sb = new StringBuilder();
            //for (int i = 0; i < hashBytes.Length; i++)
            //{
            //    sb.Append(hashBytes[i].ToString("X2")); // 格式化为十六进制字符串
            //}

            string base64Hash = Convert.ToBase64String(inputBytes);
            return base64Hash;
        }

1.2还原

using System;

class Program
{
    static void Main()
    {
        // 假设我们有一个Base64编码的字符串
        string base64String = "SGVsbG8gV29ybGQh"; // Base64编码的 "Hello World!"

        // 将Base64字符串解码为字节
        byte[] bytes = Convert.FromBase64String(base64String);

        // 将字节转换回文本字符串
        string originalString = Encoding.UTF8.GetString(bytes);

        Console.WriteLine("Decoded String: " + originalString);
    }
}

二 RSA-SHA256 签名和验证

  // 使用RSA-SHA256算法对数据进行签名
        public static string SignDataWithRSA(string data, string privateKey)
        {
            byte[] dataBytes = Encoding.UTF8.GetBytes(data);

            // 创建RSA加密服务提供程序并加载私钥
            using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider())
            {
                rsa.FromXmlString(privateKey);

                // 使用RSACryptoServiceProvider进行签名
                byte[] signatureBytes = rsa.SignData(dataBytes, new SHA256CryptoServiceProvider());

                // 将签名转换为Base64字符串
                string signature = Convert.ToBase64String(signatureBytes);
                return signature;
            }
        }

        /// <summary>
        ///  验证签名方法
        /// </summary>
        /// <param name="data"></param>
        /// <param name="signature"></param>
        /// <param name="publicKeyKey"></param>
        /// <returns></returns>
        public static bool VerifySignature(string data, string signature, string publicKeyKey)
        {
            byte[] dataBytes = Encoding.UTF8.GetBytes(data);

            // 将Base64字符串解码为字节
            byte[] bytes = Convert.FromBase64String(signature);

            // 将字节转换回文本字符串
            // string originalString = Encoding.UTF8.GetString(bytes);
            // 创建RSA加密服务提供程序并加载私钥
            using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider())
            {
                rsa.FromXmlString(publicKeyKey);
                return rsa.VerifyData(dataBytes, new SHA256CryptoServiceProvider(), bytes);

            }
        }

        // 使用SHA-256算法对数据进行哈希运算
        public static byte[] ComputeSHA256Hash(string data)
        {
            using (SHA256 sha256 = SHA256.Create())
            {
                byte[] dataBytes = Encoding.UTF8.GetBytes(data);
                return sha256.ComputeHash(dataBytes);
            }
        }