C# 实现 AES 加密解密代码示例

这是一个使用 C# 实现 AES 加密的示例代码:

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

class Program
{
    static void Main()
    {
        string plainText = 'Hello World!';
        string key = '12345678901234567890123456789012';
        string iv = '1234567890123456';

        byte[] encryptedBytes = EncryptStringToBytes(plainText, key, iv);
        string decryptedText = DecryptStringFromBytes(encryptedBytes, key, iv);

        Console.WriteLine('Plain Text: ' + plainText);
        Console.WriteLine('Encrypted Text: ' + Convert.ToBase64String(encryptedBytes));
        Console.WriteLine('Decrypted Text: ' + decryptedText);
    }

    static byte[] EncryptStringToBytes(string plainText, string key, string iv)
    {
        byte[] keyBytes = Encoding.UTF8.GetBytes(key);
        byte[] ivBytes = Encoding.UTF8.GetBytes(iv);

        using (Aes aes = Aes.Create())
        {
            aes.Key = keyBytes;
            aes.IV = ivBytes;

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

            using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
            {
                using (CryptoStream cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write))
                {
                    byte[] plainTextBytes = Encoding.UTF8.GetBytes(plainText);
                    cs.Write(plainTextBytes, 0, plainTextBytes.Length);
                }

                return ms.ToArray();
            }
        }
    }

    static string DecryptStringFromBytes(byte[] cipherText, string key, string iv)
    {
        byte[] keyBytes = Encoding.UTF8.GetBytes(key);
        byte[] ivBytes = Encoding.UTF8.GetBytes(iv);

        using (Aes aes = Aes.Create())
        {
            aes.Key = keyBytes;
            aes.IV = ivBytes;

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

            using (System.IO.MemoryStream ms = new System.IO.MemoryStream(cipherText))
            {
                using (CryptoStream cs = new CryptoStream(ms, decryptor, CryptoStreamMode.Read))
                {
                    byte[] decryptedBytes = new byte[cipherText.Length];
                    int decryptedByteCount = cs.Read(decryptedBytes, 0, decryptedBytes.Length);

                    return Encoding.UTF8.GetString(decryptedBytes, 0, decryptedByteCount);
                }
            }
        }
    }
}

在上述代码中,我们使用 Aes 类来创建 AES 加密算法对象,然后使用给定的密钥和初始向量 (IV) 对明文进行加密。加密和解密过程使用 CryptoStream 类来进行数据流的加密和解密操作。最后,我们将加密后的字节数组转换为 Base64 字符串进行输出。

相关概念:

  • AES (Advanced Encryption Standard):高级加密标准,是一种对称分组密码算法。
  • 密钥 (Key):用于加密和解密数据的秘密信息。
  • 初始向量 (IV):用于增强加密算法的安全性,确保每次加密的结果都不同。
  • CryptoStream:用于对数据流进行加密和解密操作的类。

注意事项:

  • 密钥和 IV 应保密,避免泄露。
  • 使用随机生成的密钥和 IV 可以提高安全性。
  • 实际应用中,应根据具体需求选择合适的加密算法和参数。

更多信息:

C# AES 加密解密代码示例

原文地址: https://www.cveoy.top/t/topic/qhQW 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录