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日

相关文章

  • C#实现简单超市收银系统

    C#实现简单超市收银系统攻略 本攻略将会让您学习如何使用C#编写一个简单的超市收银系统。这个系统可以进行基本的商品库存管理和结算功能,包含了商品添加、修改、查询和删除功能。此外,当用户选购完商品后,系统会对商品进行结算并输出购物清单和价格信息。 1. 搭建环境 在开始编写代码之前,我们需要先搭建好我们的编程环境,需要准备以下工具: Visual Studio…

    C# 2023年6月6日
    00
  • C#采用HttpWebRequest实现保持会话上传文件到HTTP的方法

    针对你提出的问题,我会按照以下步骤进行回答: 标题:C#采用HttpWebRequest实现保持会话上传文件到HTTP的方法 内容: 1)HttpWebRequest概述 在C#中,我们可以通过HttpWebRequest对象来进行HTTP请求。HttpWebRequest是Web请求的一种方法,它提供了对HTTP协议和其他互联网协议的灵活、可扩展的支持。这…

    C# 2023年6月1日
    00
  • C#实现彻底删除文件的方法

    C#实现彻底删除文件有多种方法,下面将为大家介绍两种实现的方法及示例。 方法一:使用File类的Delete方法 使用File类的Delete方法可以实现彻底删除文件,该方法可以接收文件路径作为参数,会删除目标文件而不会将其放入回收站。 下面是一个删除文件的示例代码: using System; using System.IO; namespace Dele…

    C# 2023年6月1日
    00
  • C#中构造函数和析构函数用法实例详解

    C#中构造函数和析构函数用法实例详解 简介 在C#中,构造函数和析构函数是两个重要的概念。它们分别在创建对象和销毁对象时被调用。本文将详细讲解C#中构造函数和析构函数的用法,帮助你更好地理解这两个概念。 构造函数 什么是构造函数 C#中的构造函数是一种特殊的方法,它在创建一个对象时被调用。构造函数用来初始化对象的成员变量,确保对象能够正常工作。如果我们没有定…

    C# 2023年5月31日
    00
  • asp.net自定义控件代码学习笔记

    关于“asp.net自定义控件代码学习笔记”的完整攻略,我可以分为以下几个部分来进行讲解: 1. 自定义控件的基本概念 自定义控件是asp.net中的一种特殊控件,它能够和普通控件一样被放置在页面上并进行交互,但是它的实现过程相对于普通控件更加灵活且复杂。 一个自定义控件通常包含两个部分:控件类和控件外观。控件类一般用来定义控件的行为和属性,控件外观则由ht…

    C# 2023年5月31日
    00
  • 关于C#中GUI编程的标准事件问题

    关于C#中GUI编程的标准事件问题,我将从如下几个方面进行讲解: 什么是C#中GUI编程的标准事件? 在C#中GUI编程中,我们可以利用事件的机制来响应用户与界面的交互操作,比如鼠标的点击、键盘的敲击等。其中,标准事件是指预定义好的一些事件,比如按钮的Click事件、文本框的TextChanged事件等,这些事件都被封装在.NET Framework中的相关…

    C# 2023年6月7日
    00
  • ASP.NET Core MVC中的模型(Model)

    在本攻略中,我们将详细讲解ASP.NET Core MVC中的模型(Model),并提供两个示例说明。 什么是模型(Model)? 在ASP.NET Core MVC中,模型(Model)是表示应用程序数据的类或对象。模型通常包含与数据库表或其他数据源中的数据相对应的属性。模型还可以包含用于验证数据的方法和属性。 如何创建模型(Model)? 在ASP.NE…

    C# 2023年5月17日
    00
  • 一个进程间通讯同步的C#框架引荐

    一个进程间通讯同步的C#框架是为了解决进程间通讯的问题而产生的。在多线程编程中,线程之间是可以共享数据的,但是如果要实现不同进程之间的数据共享,就需要进程间通讯(IPC)技术了。同时,为了保证数据的正确性和同步性,需要使用同步机制。 C# 提供了多种进程间通信的方式,包括共享内存、管道、消息队列、socket等,但是要实现同步机制需要花费较多的时间和精力。在…

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