C#编写DES加密、解密类

yizhihongxing

C#编写DES加密、解密类

DES是一种对称加密算法,其全称为Data Encryption Standard。在现代通讯、网络、存储、金融等各个领域都起到了不可替代的数据加密保护作用。在C#中,可以通过编写DES加密、解密类来实现数据加密与解密操作。

1.创建DES加密、解密类

首先,我们需要创建一个类来封装DES加密、解密操作。可以参照下面的代码:

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

public class DESHelper
{
    private static string key = "12345678";  // 8位秘钥
    private static byte[] sKey = Encoding.UTF8.GetBytes(key);  // 秘钥字节数组
    private static byte[] sIV = Encoding.UTF8.GetBytes(key);  // 向量字节数组

    // 加密字符串,返回经过加密后的字符串
    public static string Encrypt(string input)
    {
        byte[] data = Encoding.UTF8.GetBytes(input);  // 待加密的字符串转换为字节数组
        DESCryptoServiceProvider des = new DESCryptoServiceProvider();  // 创建DES加密对象
        des.Key = sKey;  // 设置秘钥
        des.IV = sIV;  // 设置向量

        using (var ms = new System.IO.MemoryStream())
        {
            using (var cryptoStream = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write))
            {
                cryptoStream.Write(data, 0, data.Length);
                cryptoStream.FlushFinalBlock();
                return Convert.ToBase64String(ms.ToArray());  // 转换为Base64字符串
            }
        }
    }

    // 解密字符串,返回经过解密后的原始字符串
    public static string Decrypt(string input)
    {
        byte[] data = Convert.FromBase64String(input);
        DESCryptoServiceProvider des = new DESCryptoServiceProvider();
        des.Key = sKey;
        des.IV = sIV;

        using (var ms = new System.IO.MemoryStream())
        {
            using (var cryptoStream = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write))
            {
                cryptoStream.Write(data, 0, data.Length);
                cryptoStream.FlushFinalBlock();
                return Encoding.UTF8.GetString(ms.ToArray());  // 字节数组转换为字符串
            }
        }
    }
}

这里我们采用静态类的方式来封装加密、解密操作。其中,私有静态变量key表示秘钥,sKey和sIV分别表示秘钥和向量的字节数组。在这里,我们将秘钥和向量都设置为相同的值。

在Encrypt方法中,首先将原始字符串转换为字节数组,然后创建DES加密对象,设置秘钥和向量,使用CryptoStream将数据加密后转换为Base64字符串。在Decrypt方法中,首先将Base64字符串转换为字节数组,然后创建DES加密对象,设置秘钥和向量,使用CryptoStream将数据解密后转换为原始字符串。

2.使用DES加密、解密类

使用上面封装好的DES加密、解密类十分简单。我们可以直接调用Encrypt和Decrypt方法来实现加密、解密操作。下面给出两个示例:

示例1:加密字符串并输出结果

string inputStr = "Hello, DES!";
string encryptedStr = DESHelper.Encrypt(inputStr);  // 调用DESHelper类的Encrypt方法加密字符串
Console.WriteLine("加密前:" + inputStr);
Console.WriteLine("加密后:" + encryptedStr);

运行结果如下:

加密前:Hello, DES!
加密后:NM/X+iEXd12bL9sz+0sEhQ==

示例2:解密字符串并输出结果

string inputStr = "NM/X+iEXd12bL9sz+0sEhQ==";
string decryptedStr = DESHelper.Decrypt(inputStr);  // 调用DESHelper类的Decrypt方法解密字符串
Console.WriteLine("解密前:" + inputStr);
Console.WriteLine("解密后:" + decryptedStr);

运行结果如下:

解密前:NM/X+iEXd12bL9sz+0sEhQ==
解密后:Hello, DES!

这样,我们就成功地实现了DES加密、解密类,并且使用它进行了字符串加密、解密操作。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#编写DES加密、解密类 - Python技术站

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

相关文章

  • WPF快速入门教程之绑定Binding

    下面是对于“WPF快速入门教程之绑定Binding”的详细讲解攻略。 什么是绑定? 在WPF中,绑定是一种用于从一个元素获取值,并将值分配给另一个元素的机制。绑定功能可以帮助您更轻松地构建可扩展的应用程序,并使您在不显式编写代码的情况下轻松地管理UI元素之间的数据同步。 如何进行绑定? WPF中的绑定功能通过Binding类实现,该类可以在XAML中定义。以…

    C# 2023年6月1日
    00
  • c#图片上传和显示的实现方法

    C# 图片上传和显示是 Web 开发中的常见需求。本文将介绍 C# 图片上传和显示的实现方法。 图片上传 图片上传需要使用 HTML 的 form 表单和服务器端的代码处理。以下是实现图片上传的基本步骤: HTML Form 表单中添加 <input type=”file” name=”image”>,用于选择要上传的图片文件。 在服务器端,使用…

    C# 2023年5月15日
    00
  • .NET MVC中ViewData,ViewBag和TempData的区别浅析

    视图数据传递的作用 在MVC框架的开发中,视图所需要的数据可以通过视图中的一个变量或对象来接收,因此需要将需要传递的数据先存储到某一个传递的变量中,在视图中再进行读取和使用。而ViewData、ViewBag和TempData这三个可选项都可以用来传递这些数据。 ViewData是一个字典类型的对象,可以用于在控制器和视图之间传递数据,所传递的数据只在请求期…

    C# 2023年5月31日
    00
  • C# 异步多线程入门基础

    C# 异步多线程入门基础攻略 什么是异步多线程? 异步多线程是指在一个单独的线程中运行代码,以避免长时间运行的操作阻塞主线程。在C#中,使用异步多线程可以大幅提升应用程序的性能和响应速度。主要包括以下几个步骤: 创建新线程 定义异步操作、回调函数等 执行异步操作 合并结果 使用 C# 异步多线程的基础 通过 Thread 类创建新线程 可以使用 Thread…

    C# 2023年6月1日
    00
  • C#动态执行字符串(动态创建代码)的实例代码

    完整攻略: 在C#语言中,可以通过动态执行字符串的方式来动态创建代码。这个过程涉及到C#中的一些重要的关键字和类,比如dynamic、CompilerParameters等。 以下是这个过程的完整示例代码: 示例1 // 创建C#代码字符串 string code = @" public class DynamicCode { public sta…

    C# 2023年5月31日
    00
  • C#异步编程Task的创建方式

    C#中的异步编程是为了方便对于耗时操作的处理,而Task是一种比较常用的异步编程工具,在这里,我将为您提供完整的C#异步编程Task的创建方式攻略。 示例一:使用Task.Run()方法创建一个异步任务 在C#中,可以使用Task.Run()方法创建一个异步任务,在这个异步任务中,我们可以执行需要异步处理的操作。 async Task Method1() {…

    C# 2023年6月6日
    00
  • c#通过DES加密算法加密大文件的方法

    首先,需要在C#代码中添加System.Security.Cryptography命名空间,然后定义一个DES加密算法类使用的密钥和IV(初始化向量),并创建一个DES加密器对象,以便用于加密文件。 接下来,需要读取要加密的文件,并将其存储到内存流中。然后,使用加密器对象对数据进行处理,将加密后的数据写入新的文件中。最后,需要关闭加密器和内存流对象。 以下是…

    C# 2023年6月1日
    00
  • C# 设置Chart的X轴为时间轴​​​​​​​详情

    下面是关于C#设置Chart的X轴为时间轴的完整攻略: 步骤一:添加 NuGet 包 在 Visual Studio 中打开相应的项目,右键单击项目并选择“管理 NuGet 包”。在 NuGet 界面的搜索栏中输入“System.Windows.Forms.DataVisualization”,选择“System.Windows.Forms.DataVisu…

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