Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

c# des加密

作者:战神再世   发布日期:2025-12-15   浏览:31

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

public class DESCrypto
{
    // DES加密方法
    public static string Encrypt(string plainText, string key)
    {
        using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())
        {
            // 设置密钥和初始化向量(IV)
            des.Key = Encoding.UTF8.GetBytes(key);
            des.IV = Encoding.UTF8.GetBytes(key);

            byte[] inputByteArray = Encoding.UTF8.GetBytes(plainText);

            using (MemoryStream ms = new MemoryStream())
            {
                using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write))
                {
                    cs.Write(inputByteArray, 0, inputByteArray.Length);
                    cs.FlushFinalBlock();
                    return Convert.ToBase64String(ms.ToArray());
                }
            }
        }
    }

    // DES解密方法
    public static string Decrypt(string cipherText, string key)
    {
        using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())
        {
            // 设置密钥和初始化向量(IV)
            des.Key = Encoding.UTF8.GetBytes(key);
            des.IV = Encoding.UTF8.GetBytes(key);

            byte[] inputByteArray = Convert.FromBase64String(cipherText);

            using (MemoryStream ms = new MemoryStream())
            {
                using (CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write))
                {
                    cs.Write(inputByteArray, 0, inputByteArray.Length);
                    cs.FlushFinalBlock();
                    return Encoding.UTF8.GetString(ms.ToArray());
                }
            }
        }
    }
}

// 示例用法
class Program
{
    static void Main()
    {
        string original = "Here is some data to encrypt!";
        string key = "12345678"; // DES密钥必须是8个字符

        // 加密
        string encrypted = DESCrypto.Encrypt(original, key);
        Console.WriteLine("Encrypted: " + encrypted);

        // 解密
        string decrypted = DESCrypto.Decrypt(encrypted, key);
        Console.WriteLine("Decrypted: " + decrypted);
    }
}

解释说明:

  1. DES加密和解密类DESCrypto 类包含了两个静态方法 EncryptDecrypt,用于对字符串进行 DES 加密和解密。
  2. 密钥和IV:DES 算法要求密钥长度为 8 字节(即 8 个字符),因此在代码中我们使用了 Encoding.UTF8.GetBytes(key) 将密钥转换为字节数组。同样地,初始化向量(IV)也设置为与密钥相同的值。
  3. 加密过程:将明文转换为字节数组,通过 CryptoStream 使用 DES 加密器进行加密,最终将加密后的字节数组转换为 Base64 编码的字符串。
  4. 解密过程:将 Base64 编码的字符串转换回字节数组,通过 CryptoStream 使用 DES 解密器进行解密,最终将解密后的字节数组转换为原始字符串。
  5. 示例用法:在 Main 方法中展示了如何使用 DESCrypto 类进行加密和解密操作。

请注意,DES 是一种较旧的加密算法,安全性较低,建议在实际应用中使用更安全的加密算法如 AES。

上一篇:c# byte[] 转string

下一篇:c# 求余数

大家都在看

c# 二进制

c# datatable group by

c# tcp client

c# type.gettype

c# sqlconnection

c# string.format 小数位数

.net和c#

c#获取系统时间

c#游戏开发

c#网络编程

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站