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

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日

相关文章

  • C#泛型的逆变协变之个人理解

    下面是关于C#泛型的逆变协变的个人理解和相关示例: 什么是泛型逆变和协变? 在C#中,泛型指的是具有参数化类型的类和方法。逆变和协变是泛型中的一种特殊的概念,它们分别指泛型类型参数的赋值方式和约束条件。 泛型逆变(contravariance)指的是泛型类、泛型委托等类型参数的类型参数能够赋值给其父类型参数,或者其父类型参数的类型参数(即父类型的类型参数)能…

    C# 2023年5月14日
    00
  • C#正则表达式实用大全(建议收藏!)

    C#正则表达式实用大全(建议收藏!) 什么是正则表达式? 正则表达式是一种文本模式,通常被用来检索、替换那些符合某个模式的文本。在C#中,我们可以使用正则表达式来进行字符串匹配、查找和替换等操作。 正则表达式的语法 在C#中,正则表达式语法使用的是Perl风格的语法,它包含了很多元字符和修饰符,可以用来匹配常见的文本模式。下面是一些常用的正则表达式元字符: …

    C# 2023年6月1日
    00
  • C#简单实现表达式目录树(Expression)

    下面是我对于“C#简单实现表达式目录树(Expression)”的完整攻略。 表达式目录树简介 表达式目录树是一个树形结构,可以用来表示 LINQ 查询和 Lambda 表达式。表达式目录树将表达式树转换为运行时的委托,从而实现了高效的查询。在表达式目录树中,每个节点都表示一个表达式,可以是参数、常量、变量、运算符等。表达式目录树不仅能用于构建查询,还可以用…

    C# 2023年5月31日
    00
  • C# Directory.GetCurrentDirectory():获取当前进程的工作目录路径

    Directory.GetCurrentDirectory()方法用于获取当前程序运行的工作目录,即当前程序所在的文件路径。该方法返回一个字符串类型的路径表示当前程序在哪个目录运行。该方法没有任何参数。 使用方法 string currentDirectory = Directory.GetCurrentDirectory(); Console.WriteL…

    C# 2023年4月19日
    00
  • C#实现图书管理系统

    C# 实现图书管理系统 在本篇攻略中,我们将演示如何使用 C# 实现一个图书管理系统。该系统的功能如下: 添加图书:包括书名、作者、出版社、出版日期、价格等信息; 删除图书; 修改图书信息; 查询图书信息:查询所有图书或根据书名或作者进行模糊查询; 显示所有图书; 技术栈 C#:一种面向对象的编程语言; Windows Forms:一种基于 Windows …

    C# 2023年5月31日
    00
  • CodeBuilder 3 预览版发布

    CodeBuilder是一款强大的代码生成工具,目前发布了 3.0 preview 2,大家可以前去下载体验 官方主页。 1、多种数据源 基于 ADO.NET 的数据驱动 基于 Fireasy 3,支持从 SqlServer、MySql、Oracle、Firebird、PostgreSql、SQLite、达梦、人大金仓、神通数据库,以及 OleDb 驱动。可…

    C# 2023年4月22日
    00
  • C# 本地函数与 Lambda 表达式详细介绍

    C# 本地函数与 Lambda 表达式详细介绍 在 C# 7.0 中,本地函数(Local Function)成为了新语法糖。本地函数是一种嵌套在方法(函数)中的函数,本地函数通常需要访问外部方法中的局部变量或参数,本地函数也需要遵守访问修饰符的限制。Lambda 表达式是 C# 语言中的另一种语法糖,用于创建可传递的匿名函数。 本地函数 本地函数是一种新语…

    C# 2023年6月1日
    00
  • C#串口编程实例代码

    为了进行C#串口编程,我们需要使用System.IO.Ports命名空间中的SerialPort类。下面是完整步骤: 打开Visual Studio,创建一个新的C#控制台应用程序。 在“解决方案资源管理器”的项目中右键单击“引用”,选择“添加引用”,然后选中“System.IO.Ports”。 打开Program.cs文件,在命名空间后添加以下代码: us…

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