C#加密解密类实例程序

以下是详细的“C#加密解密类实例程序”的攻略:

一、概述

在现代信息技术领域,数据加密已经成为很多应用的基本需求。为此,C#提供了一系列的加密解密类,比如MD5、SHA1、DES、AES等等。本文将主要介绍使用C#实现加密解密的方法,其中涉及到的加密算法是DES和AES。

二、加密解密实例

2.1 DES加密解密

DES是一种常用的对称加密算法,下面是一个使用DES加密和解密的示例程序:

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

public class DESCryptoHelper
{
    private static byte[] KEY = Encoding.UTF8.GetBytes("12345678");
    private static byte[] IV = Encoding.UTF8.GetBytes("abcdefgh");

    public static string DESEncrypt(string str)
    {
        DESCryptoServiceProvider desProvider = new DESCryptoServiceProvider();
        MemoryStream stream = new MemoryStream();
        CryptoStream cs = new CryptoStream(stream, desProvider.CreateEncryptor(KEY, IV), CryptoStreamMode.Write);
        byte[] data = Encoding.UTF8.GetBytes(str);
        cs.Write(data, 0, data.Length);
        cs.FlushFinalBlock();
        return Convert.ToBase64String(stream.ToArray());
    }

    public static string DESDecrypt(string str)
    {
        DESCryptoServiceProvider desProvider = new DESCryptoServiceProvider();
        MemoryStream stream = new MemoryStream(Convert.FromBase64String(str));
        CryptoStream cs = new CryptoStream(stream, desProvider.CreateDecryptor(KEY, IV), CryptoStreamMode.Read);
        StreamReader reader = new StreamReader(cs);
        return reader.ReadToEnd();
    }
}

以上代码中用到的KEY和IV是DES算法中的密钥和初始化向量。在使用DES算法进行加密和解密时,需要把明文和密钥分别转换成字节数组,并用CryptoStream将明文和密钥进行加密或解密操作。

2.2 AES加密解密

AES是一个先进的对称加密算法,也是目前应用最广泛的加密算法之一。下面是一个使用AES加密和解密的示例程序:

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

public class AESCryptoHelper
{
    private static byte[] KEY = Encoding.UTF8.GetBytes("1234567812345678");
    private static byte[] IV = Encoding.UTF8.GetBytes("abcdefghabcdefgh");

    public static string AESEncrypt(string str)
    {
        AesCryptoServiceProvider aesProvider = new AesCryptoServiceProvider();
        MemoryStream stream = new MemoryStream();
        CryptoStream cs = new CryptoStream(stream, aesProvider.CreateEncryptor(KEY, IV), CryptoStreamMode.Write);
        byte[] data = Encoding.UTF8.GetBytes(str);
        cs.Write(data, 0, data.Length);
        cs.FlushFinalBlock();
        return Convert.ToBase64String(stream.ToArray());
    }

    public static string AESDecrypt(string str)
    {
        AesCryptoServiceProvider aesProvider = new AesCryptoServiceProvider();
        MemoryStream stream = new MemoryStream(Convert.FromBase64String(str));
        CryptoStream cs = new CryptoStream(stream, aesProvider.CreateDecryptor(KEY, IV), CryptoStreamMode.Read);
        StreamReader reader = new StreamReader(cs);
        return reader.ReadToEnd();
    }
}

以上代码中用到的KEY和IV是AES算法中的密钥和初始化向量。在使用AES算法进行加密和解密时,需要把明文和密钥分别转换成字节数组,并用CryptoStream将明文和密钥进行加密或解密操作。

三、示例说明

3.1 使用DES进行加密解密

string oriStr = "Hello,world!";//明文
string encryptedStr = DESCryptoHelper.DESEncrypt(oriStr);//加密
string decryptedStr = DESCryptoHelper.DESDecrypt(encryptedStr);//解密
Console.WriteLine("原始字符串:" + oriStr);
Console.WriteLine("加密后字符串:" + encryptedStr);
Console.WriteLine("解密后字符串:" + decryptedStr);

执行以上代码后的输出结果为:

原始字符串:Hello,world!
加密后字符串:oOZbB6MurUA=
解密后字符串:Hello,world!

3.2 使用AES进行加密解密

string oriStr = "Hello,world!";//明文
string encryptedStr = AESCryptoHelper.AESEncrypt(oriStr);//加密
string decryptedStr = AESCryptoHelper.AESDecrypt(encryptedStr);//解密
Console.WriteLine("原始字符串:" + oriStr);
Console.WriteLine("加密后字符串:" + encryptedStr);
Console.WriteLine("解密后字符串:" + decryptedStr);

执行以上代码后的输出结果为:

原始字符串:Hello,world!
加密后字符串:d+5VCEzRyLV3L/iQzqFF4Q==
解密后字符串:Hello,world!

四、总结

在C#中使用加密解密类加密解密数据十分简单,并且通过KEY和IV可以使得加密后的数据更加安全。开发者可以根据不同的需求选择不同的加密算法和加密方式。值得注意的是,在使用加密解密类时,必须要注意密钥和初始向量的长度,否则加密和解密会出现异常。

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

(0)
上一篇 2023年5月31日
下一篇 2023年5月31日

相关文章

  • 详解ASP.NET Core 中间件之压缩、缓存

    详解ASP.NET Core 中间件之压缩、缓存 在ASP.NET Core应用程序中,可以使用中间件来实现压缩和缓存功能。在本攻略中,我们将详细介绍如何使用中间件来实现压缩和缓存,并提供两个示例说明。 1. 压缩中间件 在ASP.NET Core应用程序中,可以使用中间件来实现压缩功能。可以按照以下步骤操作: 安装Microsoft.AspNetCore.…

    C# 2023年5月16日
    00
  • 基于C#的图表控件库 ScottPlot编译visual studio 2022

    以下是关于基于C#的图表控件库 ScottPlot编译visual studio 2022的完整攻略,过程中会包含两条示例说明: 准备工作 在开始编译ScottPlot之前,你需要准备以下环境: 安装Visual Studio 2022 IDE,可以从官方网站下载并安装。 安装.NET Core SDK,可以从官方网站下载并安装。 编译ScottPlot 打…

    C# 2023年6月7日
    00
  • C#一个简单的定时小程序实现代码

    下面是详细的讲解“C#一个简单的定时小程序实现代码”的完整攻略。 1. 设计思路 我们需要实现一个简单的定时小程序,应该首先考虑怎样实现计时功能。在C#中,常见的计时方式有两种:一种是使用System.Timer类,另一种是使用System.Threading.Timer类。这两种方式都可以实现定时器的功能,但有一定的差别。下面我们将分别介绍这两种方式的使用…

    C# 2023年5月31日
    00
  • C#实现验证码功能

    实现验证码功能是我们在开发网站时非常重要的一部分,它可以防止恶意攻击,保护用户的账户安全。本文将详细讲解如何使用C#来实现验证码功能,并包含两条示例说明。 1. 生成验证码图片 首先,我们需要生成验证码图片,这可以通过使用System.Drawing命名空间和Graphics类来实现。具体步骤如下: 创建一个Bitmap对象,并指定图片的宽度和高度。 使用G…

    C# 2023年6月1日
    00
  • C#动态执行批处理命令的方法

    C#可以通过Process类来执行批处理命令。但是Process类只能执行已知的静态命令。为了执行动态生成的命令,可以使用ProcessStartInfo的属性以及RedirectStandardInput和UseShellExecute方法组合来实现输入指令、执行命令的效果。 下面是两个示例: 示例一: 这个示例展示了如何使用Process类执行一个可操作…

    C# 2023年5月15日
    00
  • C#运用FileInfo类实现拷贝文件的方法

    C#中可以使用FileInfo类实现拷贝文件的方法,下面介绍具体步骤和示例说明。 步骤 创建FileInfo对象,指定源文件的路径和文件名。 调用FileInfo类的CopyTo方法,将源文件复制到目标位置。 示例说明 示例一 下面的示例演示了如何使用FileInfo类实现拷贝文件的方法: using System.IO; class Program { s…

    C# 2023年6月1日
    00
  • 关于dotnet 替换 ASP.NET Core 的底层通讯为命名管道的 IPC 库的问题

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

    C# 2023年5月15日
    00
  • C#利用VS中插件打包并发布winfrom程序

    下面我将为您详细讲解“C#利用VS中插件打包并发布winfrom程序”的完整攻略。 1. 安装插件 首先,您需要在Visual Studio中安装一个名为“Visual Studio Installer Projects”的插件。该插件可在Visual Studio扩展市场中免费下载。安装完成后,重启Visual Studio以使插件生效。 2. 创建安装包…

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