C#开发中经常用的加密解密方法示例

下面是“C#开发中经常用的加密解密方法示例”的完整攻略:

1. 加密解密方法

在C#开发中经常用到的加密解密方法有:哈希加密、对称加密和非对称加密。

哈希加密

哈希加密是指将任意长度的二进制值映射成固定长度的较小二进制值的过程,其特点是不可逆。C#中经常使用的哈希加密方法有MD5、SHA1、SHA256等。下面是一个MD5加密的示例代码:

using System.Security.Cryptography;
using System.Text;

public static string GetMD5(string source)
{
    MD5 md5 = new MD5CryptoServiceProvider();
    byte[] bytes = Encoding.UTF8.GetBytes(source);
    byte[] result = md5.ComputeHash(bytes);
    StringBuilder sb = new StringBuilder();
    foreach (byte b in result)
    {
        sb.Append(b.ToString("x2"));
    }
    return sb.ToString();
}

在示例代码中,首先创建MD5加密算法的实例,然后将待加密字符串转换成字节数组,利用ComputeHash方法计算MD5值,最后将MD5值转换成16进制字符串返回。

对称加密

对称加密是指使用同一个密钥进行加密和解密的加密方式。C#中经常使用的对称加密方法有AES、DES等。下面是一个AES加密的示例代码:

using System.Security.Cryptography;
using System.Text;

public static string AESEncrypt(string source, string key)
{
    byte[] bytes = Encoding.UTF8.GetBytes(source);
    byte[] keyBytes = Encoding.UTF8.GetBytes(key);
    using (var aes = Aes.Create())
    {
        aes.Padding = PaddingMode.PKCS7;
        aes.Key = keyBytes;
        aes.IV = keyBytes;
        using (var msEncrypt = new MemoryStream())
        {
            using (var csEncrypt = new CryptoStream(msEncrypt, aes.CreateEncryptor(), CryptoStreamMode.Write))
            {
                csEncrypt.Write(bytes, 0, bytes.Length);
            }
            return Convert.ToBase64String(msEncrypt.ToArray());
        }
    }
}

public static string AESDecrypt(string source, string key)
{
    byte[] bytes = Convert.FromBase64String(source);
    byte[] keyBytes = Encoding.UTF8.GetBytes(key);
    using (var aes = Aes.Create())
    {
        aes.Padding = PaddingMode.PKCS7;
        aes.Key = keyBytes;
        aes.IV = keyBytes;
        using (var msDecrypt = new MemoryStream(bytes))
        {
            using (var csDecrypt = new CryptoStream(msDecrypt, aes.CreateDecryptor(), CryptoStreamMode.Read))
            {
                using (var srDecrypt = new StreamReader(csDecrypt))
                {
                    return srDecrypt.ReadToEnd();
                }
            }
        }
    }
}

在示例代码中,首先将待加密字符串和密钥转换成字节数组,然后创建AES加密算法的实例,并设置PaddingMode和Key、IV等参数。利用CreateEncryptor方法创建加密流,将待加密字符串写入加密流,得到密文。对于解密,需要先将密文转换成字节数组,然后创建AES解密算法的实例,并设置PaddingMode和Key、IV等参数。利用CreateDecryptor方法创建解密流,将密文写入解密流,得到原始字符串。

非对称加密

非对称加密是指使用一对公钥和私钥进行加密和解密的加密方式。C#中经常使用的非对称加密方法有RSA等。下面是一个RSA加密的示例代码:

using System.Security.Cryptography;
using System.Text;

public static string RSAEncrypt(string source, string publicKey)
{
    byte[] bytes = Encoding.UTF8.GetBytes(source);
    using (var rsa = new RSACryptoServiceProvider())
    {
        rsa.FromXmlString(publicKey);
        byte[] resultBytes = rsa.Encrypt(bytes, false);
        return Convert.ToBase64String(resultBytes);
    }
}

public static string RSADecrypt(string source, string privateKey)
{
    byte[] bytes = Convert.FromBase64String(source);
    using (var rsa = new RSACryptoServiceProvider())
    {
        rsa.FromXmlString(privateKey);
        byte[] resultBytes = rsa.Decrypt(bytes, false);
        return Encoding.UTF8.GetString(resultBytes);
    }
}

在示例代码中,首先将待加密字符串转换成字节数组,然后创建RSA加密算法的实例,并将公钥字符串转换成RSA格式。使用Encrypt方法对待加密字符串进行加密,并将结果转换成Base64字符串返回。对于解密,需要先将密文字符串转换成字节数组,然后创建RSA解密算法的实例,并将私钥字符串转换成RSA格式。使用Decrypt方法对密文字符串进行解密,并将结果转换成字符串返回。

2. 示例说明

针对以上加密解密方法,下面简单演示哈希加密方法的使用示例。

string source = "Hello, world!";
string md5 = GetMD5(source);
Console.WriteLine($"MD5({source}) = {md5}");

在示例代码中,首先定义待加密字符串,然后调用GetMD5方法计算MD5值,并输出结果。

输出结果如下:

MD5(Hello, world!) = ed076287532e86365e841e92bfc50d8c

以上是“C#开发中经常用的加密解密方法示例”的完整攻略,包括加密解密方法的介绍和示例说明。希望对您有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#开发中经常用的加密解密方法示例 - Python技术站

(0)
上一篇 2023年6月7日
下一篇 2023年6月7日

相关文章

  • 关于dotnet 替换 ASP.NET Core 的底层通讯为命名管道的 IPC 库的问题

    下面是关于“关于dotnet 替换 ASP.NET Core 的底层通讯为命名管道的 IPC 库的问题”的完整攻略,包含两个示例。 1. 什么是IPC IPC(Inter-Process Communication)是进程间通信的缩写。在计算机系统中,进程间通信是非常重要的,因为不同的进程需要共享数据和资源。IPC可以使不同的进程之间进行通信和协作,从而实现…

    C# 2023年5月15日
    00
  • .NET IoC模式依赖反转(DIP)、控制反转(Ioc)、依赖注入(DI)

    .NET IoC模式依赖反转(DIP)、控制反转(Ioc)、依赖注入(DI)攻略 在 .NET 中,IoC(Inversion of Control)模式是一种设计模式,它包括依赖反转(DIP)、控制反转(IoC)和依赖注入(DI)三个概念。这些概念都是为了解决应用程序中的依赖关系问题而提出的。下面将详细介绍这三个概念。 依赖反转(DIP) 依赖反转(DIP…

    C# 2023年5月17日
    00
  • .NET Core使用Eureka实现服务注册

    下面我将详细讲解”.NET Core使用Eureka实现服务注册”的完整攻略。 什么是Eureka Eureka是Netflix开源的一个提供服务治理的组件。通过Eureka,服务提供者将自己的信息(比如IP、端口、路径等)注册到Eureka上,服务消费者从Eureka上获取服务提供者的信息,然后消费者就可以根据这些信息来请求服务。这个过程中,Eureka扮…

    C# 2023年6月3日
    00
  • ASP.NET Core实现中间件的几种方式

    ASP.NET Core 实现中间件的几种方式 ASP.NET Core 是一个跨平台的开源框架,它提供了多种实现中间件的方式。下面是详细的攻略: 步骤1:创建 ASP.NET Core 项目 在 Visual Studio 中创建名为“MiddlewareDemo”的 Core 项目。 步骤2:使用 Use 方法添加中间件 在 Startup.cs 文件中…

    C# 2023年5月12日
    00
  • C#代码实现扑克牌排序的几种方式

    C#代码实现扑克牌排序的几种方式 1. 排序算法简介 排序算法是计算机程序设计中重要的算法之一,其目的是把一组无序的数据按照一定的顺序排列。排序算法在许多领域中都有广泛的应用,如在数据库中对数据进行排序,对数据结构中的元素进行排序等。 目前常用的排序算法有插入排序、冒泡排序、选择排序、快速排序、归并排序等。其中,插入排序、冒泡排序、选择排序是比较基础和简单的…

    C# 2023年6月7日
    00
  • C# ODP.NET 调用Oracle函数返回值时报错的一个解决方案

    下面是详细讲解“C#ODP.NET调用Oracle函数返回值时报错的一个解决方案”的完整攻略。 问题描述 在使用C#的ODP.NET连接Oracle数据库时,调用Oracle函数返回值时,往往会出现“Oracle.DataAccess.Client.OracleException: ORA-06502: PL/SQL: 数组或者记录数据类型必须具体化来解决这…

    C# 2023年5月15日
    00
  • 在WPF中合并两个ObservableCollection集合

    在WPF中合并两个ObservableCollection集合的攻略可以分为以下步骤: 1. 创建两个ObservableCollection集合 首先,我们需要创建两个不同的ObservableCollection集合,并分别往其中添加数据,如下所示: ObservableCollection<string> collection1 = new…

    C# 2023年6月6日
    00
  • 使用VS2010 C#开发ActiveX控件(下),完整代码打包下载

    下面是关于使用VS2010 C#开发ActiveX控件的完整攻略: 一、安装Visual Studio 2010 在开始使用VS2010 C#开发ActiveX控件之前,需要先安装Visual Studio 2010。如果您已经安装过Visual Studio 2010,则可以跳过这一步。 二、创建ActiveX控件项目 在Visual Studio 201…

    C# 2023年6月3日
    00
合作推广
合作推广
分享本页
返回顶部