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

c#加密

作者:嗜血之舞   发布日期:2026-01-10   浏览:58

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

public class EncryptionExample
{
    // 加密方法
    public static string EncryptString(string plainText, string key)
    {
        using (Aes aesAlg = Aes.Create())
        {
            byte[] keyBytes = Encoding.UTF8.GetBytes(key);
            aesAlg.Key = keyBytes;
            aesAlg.GenerateIV();
            byte[] iv = aesAlg.IV;

            ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV);

            using (MemoryStream msEncrypt = new MemoryStream())
            {
                msEncrypt.Write(iv, 0, iv.Length);
                using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
                using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
                {
                    swEncrypt.Write(plainText);
                }
                return Convert.ToBase64String(msEncrypt.ToArray());
            }
        }
    }

    // 解密方法
    public static string DecryptString(string cipherText, string key)
    {
        byte[] cipherBytes = Convert.FromBase64String(cipherText);

        using (Aes aesAlg = Aes.Create())
        {
            byte[] keyBytes = Encoding.UTF8.GetBytes(key);
            aesAlg.Key = keyBytes;
            byte[] iv = new byte[aesAlg.BlockSize / 8];
            Array.Copy(cipherBytes, iv, iv.Length);
            aesAlg.IV = iv;

            ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV);

            using (MemoryStream msDecrypt = new MemoryStream(cipherBytes))
            {
                using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
                using (StreamReader srDecrypt = new StreamReader(csDecrypt))
                {
                    return srDecrypt.ReadToEnd();
                }
            }
        }
    }

    // 测试加密解密功能
    public static void Main()
    {
        string original = "Here is some data to encrypt!";
        string key = "ThisIsASecretKey123";

        // Encrypt the string.
        string encrypted = EncryptString(original, key);
        Console.WriteLine("Encrypted: {0}", encrypted);

        // Decrypt the string.
        string decrypted = DecryptString(encrypted, key);
        Console.WriteLine("Decrypted: {0}", decrypted);
    }
}

解释说明:

  1. 加密方法 EncryptString:

    • 使用 AES 对称加密算法。
    • 将输入的明文字符串转换为字节数组,并使用指定的密钥进行加密。
    • 加密后的数据以 Base64 编码返回。
  2. 解密方法 DecryptString:

    • 使用 AES 对称加密算法。
    • 将 Base64 编码的密文字符串解码为字节数组,并使用相同的密钥进行解密。
    • 返回解密后的原始字符串。
  3. 测试代码:

    • 创建一个原始字符串并指定一个密钥。
    • 调用加密方法对字符串进行加密,然后调用解密方法恢复原始字符串。
    • 打印加密和解密的结果。

上一篇:c# 数组赋值

下一篇:c# list

大家都在看

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 中文站