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#编写的Base64加密和解密类

    基于C#语言的编写Base64加密和解密类可遵循以下步骤: 第一步:引用命名空间 using System; using System.Text; 第二步:定义加密和解密方法 public static string Base64Encode(string str) { byte[] bytes = Encoding.UTF8.GetBytes(str); …

    C# 2023年6月7日
    00
  • 关于C# TabPage如何隐藏的问题

    下面是关于C# TabPage如何隐藏的完整攻略: 关于TabPage TabPage是C#中Windows Form中的一种控件,用于创建选项卡界面。一个选项卡界面可以包含多个选项卡页(TabPage)。 隐藏TabPage 隐藏一个TabPage非常简单,只需要设置它的Visible属性即可。如果设置为false,TabPage将不会在界面上显示。示例如…

    C# 2023年6月6日
    00
  • C# 使用Dictionary复制克隆副本及比较是否相等

    下面我将详细讲解“C# 使用Dictionary复制克隆副本及比较是否相等”的完整攻略。 1. 使用Dictionary类型 首先,我们需要使用 C# 中的 Dictionary 类型来存储数据,这个类型可以看做是一种键值对的映射关系,其中的键和值均可以是任意类型。对于复制克隆副本和比较是否相等的操作,我们需要熟悉以下几个方法: 1.1. Add 方法 该方…

    C# 2023年5月31日
    00
  • C#读取word中表格数据的方法实现

    C#读取word中表格数据的方法实现 在C#中读取Word中表格数据,可以通过Microsoft.Office.Interop.Word库中提供的API来实现。下面是具体的实现方法。 步骤一:引用Microsoft.Office.Interop.Word库 在C#项目中添加Microsoft.Office.Interop.Word库的引用,引用方法如下: 在…

    C# 2023年5月15日
    00
  • C#如何安全、高效地玩转任何种类的内存之Span的本质

    C#如何安全、高效地玩转任何种类的内存之Span的本质攻略 什么是Span Span<T> 是 .NET Core 中新增的一种类型,它是一种类似于指针的结构体,表示一块连续的内存区域,其内容不一定是类型T的连续区域,可以是其他原语类型(如byte、int、long等)的连续区间。Span<T> 可以让我们高效地访问和读写内存在不进行…

    C# 2023年5月15日
    00
  • C#基础知识之new关键字介绍

    下面是关于” C#基础知识之new关键字介绍”的完整攻略: 什么是new关键字 在C#中,new关键字有两种不同的用法。一种是用来创建新的对象,另一种是用来隐藏基类中的同名成员。 创建新的对象 当我们创建一个新的对象时,需要使用new关键字和构造函数。构造函数是一个类中的特殊方法,用于初始化新对象的所有字段和属性。以下是一个简单的示例: public cla…

    C# 2023年5月31日
    00
  • asp.net C# 时间间隔的计算方法

    当我们需要在 asp.net C# 中计算时间间隔时,可以使用 TimeSpan 类。TimeSpan 类用于表示时间间隔,它包含了许多属性和方法,可以方便地进行时间间隔的计算和操作。 下面是如何使用 TimeSpan 计算时间间隔的完整攻略: 1. 定义时间变量 在计算时间间隔之前,我们需要定义两个时间变量,分别表示开始时间和结束时间。可以使用 DateT…

    C# 2023年6月1日
    00
  • C#组件系列 你值得拥有的一款Excel处理神器Spire.XLS

    C#组件系列你值得拥有的一款Excel处理神器Spire.XLS 什么是Spire.XLS Spire.XLS是一款专门针对Microsoft Excel读写的C#组件。它允许您在C#应用程序中读写Excel文件,可以方便的读取Excel文件中的内容,以及新建、编辑、保存Excel文件。 Spire.XLS的功能 Spire.XLS可以进行很多Excel文件…

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