C#实现加密的几种方法介绍

yizhihongxing

C#实现加密的几种方法介绍

在C#中实现加密的方法有很多,本文将介绍其中的几种常用方法。

1. 对称加密算法

对称加密算法是指加密和解密使用同一密钥的加密算法。常用的对称加密算法有DES、3DES、AES等。

1.1 DES加密算法

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

public static string DES_Encrypt(string str, string key)
{
    DESCryptoServiceProvider des = new DESCryptoServiceProvider();
    byte[] inputByteArray = Encoding.UTF8.GetBytes(str);
    des.Key = Encoding.ASCII.GetBytes(key.Substring(0, 8));
    des.IV = Encoding.ASCII.GetBytes(key.Substring(0, 8));
    MemoryStream ms = new MemoryStream();
    CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
    cs.Write(inputByteArray, 0, inputByteArray.Length);
    cs.FlushFinalBlock();
    StringBuilder sb = new StringBuilder();
    foreach (byte b in ms.ToArray())
    {
        sb.AppendFormat("{0:X2}", b);
    }
    return sb.ToString();
}

1.2 AES加密算法

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

public static string AES_Encrypt(string str, string key)
{
    byte[] keyArray = Encoding.UTF8.GetBytes(key);
    RijndaelManaged rDel = new RijndaelManaged();
    rDel.Key = keyArray;
    rDel.Mode = CipherMode.ECB;
    rDel.Padding = PaddingMode.PKCS7;
    ICryptoTransform cTransform = rDel.CreateEncryptor();
    byte[] inputByteArray = Encoding.UTF8.GetBytes(str);
    byte[] resultArray = cTransform.TransformFinalBlock(inputByteArray, 0, inputByteArray.Length);
    return Convert.ToBase64String(resultArray, 0, resultArray.Length);
}

2. 非对称加密算法

非对称加密算法是指加密和解密使用不同密钥的加密算法。常用的非对称加密算法有RSA算法。

2.1 RSA加密算法

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

public static string RSA_Encrypt(string xmlPublicKey, string content)
{
    RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
    rsa.FromXmlString(xmlPublicKey);
    byte[] inputByteArray = Encoding.UTF8.GetBytes(content);
    byte[] resultArray = rsa.Encrypt(inputByteArray, false);
    return Convert.ToBase64String(resultArray, 0, resultArray.Length);
}

示例演示

示例1:对称加密算法DES加密

string plainText = "这是一段明文";
string key = "11111111";
string encryptedText = DES_Encrypt(plainText, key);
Console.WriteLine("加密后的密文:{0}", encryptedText);

示例2:非对称加密算法RSA加密

string plainText = "这是一段明文";
string xmlPublicKey = "<RSAKeyValue><Modulus>...</Modulus><Exponent>65537</Exponent></RSAKeyValue>";
string encryptedText = RSA_Encrypt(xmlPublicKey, plainText);
Console.WriteLine("加密后的密文:{0}", encryptedText);

以上就是C#实现加密的几种常用方法的介绍。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#实现加密的几种方法介绍 - Python技术站

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

相关文章

  • 使用扩展函数方式,在Winform界面中快捷的绑定树形列表TreeList控件和TreeListLookUpEdit控件

    在一些字典绑定中,往往为了方便展示详细数据,需要把一些结构树展现在树列表TreeList控件中或者下拉列表的树形控件TreeListLookUpEdit控件中,为了快速的处理数据的绑定操作,比较每次使用涉及太多细节的操作,我们可以把相关的数据绑定操作,放在一些辅助类的扩展函数中进行处理,这样可以更方便的,更简洁的处理数据绑定操作,本篇随笔介绍TreeList…

    C# 2023年4月30日
    00
  • C# Datatable的几种用法小结

    C# Datatable的几种用法小结 什么是C# Datatable? C# Datatable是一个用于在内存中存储数据的表结构对象。它可以用于存储和操作数据源中的多行数据,并且能够提供强大的筛选、排序、分组等功能。C# Datatable是ADO.NET中的一部分,可以用于在Windows Forms、WPF应用程序及Web应用程序中显示和操作数据。 …

    C# 2023年5月15日
    00
  • 用.NET Core写爬虫爬取电影天堂

    用.NET Core写爬虫爬取电影天堂 在本攻略中,我们将详细介绍如何使用.NET Core编写爬虫程序,爬取电影天堂网站上的电影信息,并提供两个示例说明。 1. 安装依赖 在.NET Core应用程序中,需要安装以下依赖才能实现爬虫功能。可以按照以下步骤操作: 打开Visual Studio 2019。 打开“工具”菜单,选择“NuGet包管理器”-&gt…

    C# 2023年5月16日
    00
  • 如何实现定时推送的具体方案

    要实现定时推送,我们可以借助第三方定时任务框架,例如node-schedule、cron等。 安装定时任务框架node-schedule 我们可以在项目目录下执行以下命令安装node-schedule: npm install node-schedule 编写定时推送代码 在项目代码中引入node-schedule框架,使用框架提供的scheduleJob(…

    C# 2023年6月6日
    00
  • 基于C#实现Windows服务状态启动和停止服务的方法

    下面就是基于C#实现Windows服务状态启动和停止服务的完整攻略。 1.概述 Windows服务是在后台运行的应用程序,它可以在系统启动时自动启动,也可以手动启动。为了方便控制Windows服务的运行状态,我们可以通过编写C#程序实现对服务的启动和停止操作。在下面的步骤中,我们将讲解如何使用C#代码实现这些操作。 2.获取服务对象 首先,我们需要获取Win…

    C# 2023年6月7日
    00
  • Asp.Net Core配置多环境log4net配置文件的全过程

    下面是详细讲解”Asp.Net Core配置多环境log4net配置文件的全过程”的完整攻略: 1. 引入log4net依赖 可以通过Nuget包管理器或手动安装的方式引入log4net,以Nuget包管理器为例,可以在项目中右键点击“管理NuGet程序包”,然后搜索log4net安装即可。 2. 配置log4net log4net的配置文件可以放置在多个环…

    C# 2023年6月3日
    00
  • 百万行WPF项目代码重构记录分析

    下面是关于“百万行WPF项目代码重构记录分析”的完整攻略,包含两个示例。 1. 为什么需要重构 在软件开发过程中,随着项目的不断迭代和扩展,代码会变得越来越复杂和难以维护。这时候就需要进行代码重构,以提高代码的可读性、可维护性和可扩展性。在WPF项目中,代码重构尤为重要,因为WPF项目通常包含大量的XAML代码和复杂的UI逻辑。 2. 代码重构的步骤 代码重…

    C# 2023年5月15日
    00
  • C#获取CPU处理器核心数量的方法

    获取CPU处理器核心数量是一项常见的系统信息查询任务,本文将详细讲解C#获取CPU处理器核心数量的方法。 1. .NET Framework中获取CPU核心数量的方法 .NET Framework提供了一个名为Environment的类,可以使用该类的ProcessorCount属性轻松地获取CPU核心数量。 int coreCount = Environm…

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