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日

相关文章

  • C# Path.GetExtension – 获取路径中的扩展名部分

    Path.GetExtension 是 C# 中用于获取文件名中扩展名的方法。它返回文件名中的扩展名,包括点号,如果没有扩展名则返回空字符串。 使用方法: Path.GetExtension 方法的语法如下所示: public static string GetExtension(string path); 其中 path 参数是指要返回其扩展名的文件路径字…

    C# 2023年4月19日
    00
  • 将c#编写的程序打包成应用程序的实现步骤分享(安装,卸载) 图文

    以下是将C#编写的程序打包成应用程序的实现步骤分享,包括安装和卸载,以及附有两个示例说明。 1. 编写C#程序 首先,我们需要编写C#程序。具体代码的编写不在本文的讨论范围内,这里简单介绍一下如何创建一个C#程序: 打开Visual Studio,并选择创建新的项目。 在弹出的窗口中选择“Visual C#”和“控制台应用程序”。 设置项目名称和存放位置,并…

    C# 2023年6月3日
    00
  • win10下ASP.NET Core部署环境搭建步骤

    win10下ASP.NET Core部署环境搭建步骤 ASP.NET Core是一个跨平台的开源Web框架,可以在Windows、Linux和macOS等操作系统上运行。在本攻略中,我们将介绍如何在Windows 10操作系统上搭建ASP.NET Core部署环境,并提供两个示例说明。 1. 安装.NET Core SDK 在Windows 10操作系统上搭…

    C# 2023年5月16日
    00
  • 在js中实现邮箱格式的验证方法(推荐)

    在 JavaScript 中实现邮箱格式验证方法 在 JavaScript 中,可以使用正则表达式实现邮箱格式验证。本攻略将详细介绍如何在 JavaScript 中实现邮箱格式验证方法,并提供多种验证方式的示例。 步骤一:编写正则表达式 在 JavaScript 中,可以使用正则表达式来验证邮箱格式。以下是一个简单的邮箱格式验证正则表达式: const em…

    C# 2023年5月17日
    00
  • C#类中的属性使用总结(详解类的属性)

    让我来为你讲解C#类中的属性使用总结,包括什么是属性,如何定义属性,以及如何使用属性。 什么是属性 属性是一种在C#类中定义的成员,它提供了一种封装类成员变量的方式。使用属性可以控制类的成员变量的访问级别,实现对变量的可读性、可写性和可访问性的控制,从而提高类的安全性和稳定性。 在面向对象编程中,属性是类的属性(attributes)的一种表示方式。属性一般…

    C# 2023年5月31日
    00
  • asp.net(C#)使用QRCode生成图片中心加Logo或图像的二维码实例

    这里是”asp.net(C#)使用QRCode生成图片中心加Logo或图像的二维码实例”的完整攻略。 1. 背景和需求 在很多场景中,我们需要使用二维码来进行信息传递和交流。而一般的二维码相对来说显得过于平淡无奇,很多时候却又不能脱离二维码的原本用途。那么这时,我们就可以使用带有Logo或图像的二维码来达到更好的显示效果,增加视觉冲击力,吸引更多的用户获取信…

    C# 2023年6月1日
    00
  • 通过 C#/VB.NET 代码将 Excel 工作表拆分为单独的文件

    首先对于 “通过 C#/VB.NET 代码将 Excel 工作表拆分为单独的文件” 这个问题,我们可以采用以下步骤: 第一步:打开 Excel 文件 使用 C#/VB.NET 代码操作 Excel 需要安装 Microsoft Office 的相关库文件,一般可以通过 NuGet 安装。在打开 Excel 文件之前,需要先声明引用 Microsoft.Off…

    C# 2023年5月31日
    00
  • C# 抓取网页内容的方法

    我来为你详细讲解使用C#抓取网页内容的具体攻略。 一、准备工作 在开始之前,我们需要先引用 System.Net 名称空间,该名称空间为我们提供了一系列的网络操作类。 以下是代码示例: using System.Net; 二、HTTP请求 接下来我们需要构造一个 HTTP 请求,通过该请求来获取网页内容。通常我们抓取网页内容所用的 Http 请求类型是 Ge…

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