当前位置 : 主页 > 网络编程 > net编程 >

.net6 工具类 AES DES

来源:互联网 收集:自由互联 发布时间:2023-08-25
.NET 6 工具类 AES DES AES(高级加密标准)和 DES(数据加密标准)是常用的对称加密算法,用于保护数据的机密性。在 .NET 6 中,我们可以使用内置的工具类来实现 AES 和 DES 加密。 本文将

.NET 6 工具类 AES DES

AES(高级加密标准)和 DES(数据加密标准)是常用的对称加密算法,用于保护数据的机密性。在 .NET 6 中,我们可以使用内置的工具类来实现 AES 和 DES 加密。

本文将介绍如何使用 .NET 6 工具类来进行 AES 和 DES 加密,并提供代码示例。

AES 加密

AES 是一种对称加密算法,支持不同的密钥长度(128、192 和 256 位)。在 .NET 6 中,我们可以使用 Aes 类来进行 AES 加密。

首先,我们需要创建一个 Aes 实例,并设置加密算法的一些属性,如密钥长度和填充模式。以下是一个示例代码:

using System;
using System.Security.Cryptography;

namespace AESDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            using var aes = Aes.Create();
            aes.KeySize = 256;
            aes.Padding = PaddingMode.PKCS7;

            // 加密数据
            byte[] plainText = System.Text.Encoding.UTF8.GetBytes("Hello, AES!");
            byte[] encryptedData = EncryptData(plainText, aes.Key, aes.IV);

            // 解密数据
            byte[] decryptedData = DecryptData(encryptedData, aes.Key, aes.IV);
            string decryptedText = System.Text.Encoding.UTF8.GetString(decryptedData);

            Console.WriteLine(decryptedText);
        }

        static byte[] EncryptData(byte[] data, byte[] key, byte[] iv)
        {
            using var encryptor = Aes.Create().CreateEncryptor(key, iv);
            return PerformCryptography(data, encryptor);
        }

        static byte[] DecryptData(byte[] data, byte[] key, byte[] iv)
        {
            using var decryptor = Aes.Create().CreateDecryptor(key, iv);
            return PerformCryptography(data, decryptor);
        }

        static byte[] PerformCryptography(byte[] data, ICryptoTransform transform)
        {
            using var stream = new System.IO.MemoryStream();
            using var cryptoStream = new CryptoStream(stream, transform, CryptoStreamMode.Write);
            cryptoStream.Write(data, 0, data.Length);
            cryptoStream.FlushFinalBlock();
            return stream.ToArray();
        }
    }
}

上述代码中,我们首先创建了一个 Aes 实例,并设置了密钥长度为 256 位,填充模式为 PKCS7。然后,我们使用 EncryptData 方法对明文进行加密,使用 DecryptData 方法对密文进行解密。最后,我们将解密后的数据转换为字符串并输出。

DES 加密

DES 是一种较早的对称加密算法,支持 64 位密钥。在 .NET 6 中,我们可以使用 DESCryptoServiceProvider 类来进行 DES 加密。

以下是一个使用 DES 加密和解密的示例代码:

using System;
using System.Security.Cryptography;

namespace DESDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            using var des = new DESCryptoServiceProvider();
            des.GenerateKey();
            des.GenerateIV();

            // 加密数据
            byte[] plainText = System.Text.Encoding.UTF8.GetBytes("Hello, DES!");
            byte[] encryptedData = EncryptData(plainText, des.Key, des.IV);

            // 解密数据
            byte[] decryptedData = DecryptData(encryptedData, des.Key, des.IV);
            string decryptedText = System.Text.Encoding.UTF8.GetString(decryptedData);

            Console.WriteLine(decryptedText);
        }

        static byte[] EncryptData(byte[] data, byte[] key, byte[] iv)
        {
            using var encryptor = des.CreateEncryptor(key, iv);
            return PerformCryptography(data, encryptor);
        }

        static byte[] DecryptData(byte[] data, byte[] key, byte[] iv)
        {
            using var decryptor = des.CreateDecryptor(key, iv);
            return PerformCryptography(data, decryptor);
        }

        static byte[] PerformCryptography(byte[] data, ICryptoTransform transform)
        {
            using var stream = new System.IO.MemoryStream();
            using var cryptoStream = new CryptoStream(stream, transform, CryptoStreamMode.Write);
            cryptoStream.Write(data, 0, data.Length);
            cryptoStream.FlushFinalBlock();
            return stream.ToArray();
        }
    }
}

上述代码中,我们首先创建了一个 DESCryptoServiceProvider 实例,并生成了随机的密钥和向量。然后,我们使用 EncryptData 方法对明文进行加密,使用 DecryptData 方法对密文进行解密。最后,我们将解密后的数据转换为字符串并输出。

总结

本文介绍了如何使用 .

上一篇:.net 工作单元
下一篇:没有了
网友评论