C#变量怎样进行加密和解密

发布时间:2024-12-06 14:58:00 作者:小樊
来源:亿速云 阅读:78

在C#中,对变量进行加密和解密可以使用多种方法。这里,我们将使用对称加密算法AES(Advanced Encryption Standard)来实现这一目标。AES是一种广泛使用的加密标准,它提供了强大的安全性。

首先,你需要安装System.Security.Cryptography命名空间中的Aes类。你可以通过NuGet包管理器安装System.Security.Cryptography包。

以下是一个简单的示例,展示了如何使用AES加密和解密字符串:

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

class Program
{
    static void Main()
    {
        string key = "your-secret-key"; // 用于加密和解密的密钥,长度应为16、24或32个字符
        string iv = "your-initial-vector"; // 初始化向量,长度应为16个字符

        string plaintext = "Hello, World!"; // 要加密的字符串
        string encrypted = Encrypt(plaintext, key, iv);
        string decrypted = Decrypt(encrypted, key, iv);

        Console.WriteLine($"Plaintext: {plaintext}");
        Console.WriteLine($"Encrypted: {encrypted}");
        Console.WriteLine($"Decrypted: {decrypted}");
    }

    static string Encrypt(string plaintext, string key, string iv)
    {
        byte[] plainBytes = Encoding.UTF8.GetBytes(plaintext);
        byte[] encryptedBytes = Encrypt(plainBytes, Encoding.UTF8.GetBytes(key), Encoding.UTF8.GetBytes(iv));
        return Convert.ToBase64String(encryptedBytes);
    }

    static string Decrypt(string ciphertext, string key, string iv)
    {
        byte[] encryptedBytes = Convert.FromBase64String(ciphertext);
        byte[] decryptedBytes = Decrypt(encryptedBytes, Encoding.UTF8.GetBytes(key), Encoding.UTF8.GetBytes(iv));
        return Encoding.UTF8.GetString(decryptedBytes);
    }

    static byte[] Encrypt(byte[] plainBytes, byte[] key, byte[] iv)
    {
        using (Aes aes = Aes.Create())
        {
            aes.Key = key;
            aes.IV = iv;

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

            using (MemoryStream ms = new MemoryStream())
            {
                using (CryptoStream cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write))
                {
                    cs.Write(plainBytes, 0, plainBytes.Length);
                    cs.Close();
                }

                return ms.ToArray();
            }
        }
    }

    static byte[] Decrypt(byte[] cipherBytes, byte[] key, byte[] iv)
    {
        using (Aes aes = Aes.Create())
        {
            aes.Key = key;
            aes.IV = iv;

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

            using (MemoryStream ms = new MemoryStream())
            {
                using (CryptoStream cs = new CryptoStream(ms, decryptor, CryptoStreamMode.Write))
                {
                    cs.Write(cipherBytes, 0, cipherBytes.Length);
                    cs.Close();
                }

                return ms.ToArray();
            }
        }
    }
}

在这个示例中,我们首先创建了一个Aes对象,并使用密钥和初始化向量对其进行配置。然后,我们使用Encrypt方法将字符串转换为字节数组并加密,最后将加密后的字节数组转换回字符串。解密过程与加密过程相反。

请注意,你需要将your-secret-keyyour-initial-vector替换为你自己的密钥和初始化向量。确保密钥和初始化向量的长度符合AES算法的要求(16、24或32个字符)。

推荐阅读:
  1. 淘宝h5页面的sign加密算法是怎么用的
  2. 如何使用Cmake管理项目的跨平台C++应用程序

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

上一篇:C#变量在数据结构中怎样应用

下一篇:C#中变量怎样进行数据压缩

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》