.NET Core 下 DES

清风徐来 2024-06-16 ⋅ 18 阅读

在现代软件开发中,数据加密是一项非常重要的安全措施。本文将介绍在 .NET Core 中使用 DES 和 MD5 算法进行数据加密的方法,并通过示例展示其用法。

DES 加密算法

DES (Data Encryption Standard)是一种对称加密算法,广泛应用于各种场景中。在 .NET Core 中,我们可以使用 System.Security.Cryptography 命名空间下的 DESCryptoServiceProvider 类来实现 DES 加密。

示例

下面是一个使用 DES 加密算法对字符串进行加密的示例:

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

public class DESExample
{
    public static string EncryptString(string plainText, string secretKey)
    {
        byte[] plainTextBytes = Encoding.UTF8.GetBytes(plainText);
        using var des = new DESCryptoServiceProvider();
        des.Key = Encoding.UTF8.GetBytes(secretKey);
        des.IV = Encoding.UTF8.GetBytes(secretKey);
        using var memoryStream = new MemoryStream();
        using var cryptoStream = new CryptoStream(memoryStream, des.CreateEncryptor(), CryptoStreamMode.Write);
        cryptoStream.Write(plainTextBytes, 0, plainTextBytes.Length);
        cryptoStream.FlushFinalBlock();
        return Convert.ToBase64String(memoryStream.ToArray());
    }
    
    public static string DecryptString(string encryptedText, string secretKey)
    {
        byte[] encryptedTextBytes = Convert.FromBase64String(encryptedText);
        using var des = new DESCryptoServiceProvider();
        des.Key = Encoding.UTF8.GetBytes(secretKey);
        des.IV = Encoding.UTF8.GetBytes(secretKey);
        using var memoryStream = new MemoryStream();
        using var cryptoStream = new CryptoStream(memoryStream, des.CreateDecryptor(), CryptoStreamMode.Write);
        cryptoStream.Write(encryptedTextBytes, 0, encryptedTextBytes.Length);
        cryptoStream.FlushFinalBlock();
        return Encoding.UTF8.GetString(memoryStream.ToArray());
    }
}

public class Program
{
    public static void Main()
    {
        string plainText = "Hello, World!";
        string secretKey = "MySecretKey";
        
        string encryptedText = DESExample.EncryptString(plainText, secretKey);
        Console.WriteLine("Encrypted Text: " + encryptedText);
        
        string decryptedText = DESExample.DecryptString(encryptedText, secretKey);
        Console.WriteLine("Decrypted Text: " + decryptedText);
    }
}

上述示例中的 EncryptString 方法负责将字符串进行加密,而 DecryptString 方法则负责解密。需要注意的是,加密和解密所使用的密钥必须相同。

MD5 加密算法

MD5(Message Digest Algorithm 5)是一种哈希函数,常用于数据的完整性校验和密码存储。在 .NET Core 中,可以使用 System.Security.Cryptography 命名空间下的 MD5CryptoServiceProvider 类来进行 MD5 加密。

示例

下面是一个使用 MD5 加密算法对字符串进行加密的示例:

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

public class MD5Example
{
    public static string CalculateMD5(string input)
    {
        using var md5 = MD5.Create();
        byte[] inputBytes = Encoding.UTF8.GetBytes(input);
        byte[] hashBytes = md5.ComputeHash(inputBytes);
        StringBuilder stringBuilder = new StringBuilder();
        for (int i = 0; i < hashBytes.Length; i++)
        {
            stringBuilder.Append(hashBytes[i].ToString("x2"));
        }
        return stringBuilder.ToString();
    }
}

public class Program
{
    public static void Main()
    {
        string input = "Hello, World!";
        string md5Hash = MD5Example.CalculateMD5(input);
        Console.WriteLine("MD5 Hash: " + md5Hash);
    }
}

上述示例中的 CalculateMD5 方法负责计算字符串的 MD5 哈希值,并返回十六进制表示的结果。

总结

在 .NET Core 中,使用 DES 和 MD5 加密算法对数据进行加密是一项重要的安全措施。本文介绍了如何使用 DES 加密算法对字符串进行加密以及如何使用 MD5 加密算法对字符串进行哈希。希望通过本文的示例能帮助您加强数据的安全性。


全部评论: 0

    我有话说: