当前位置:首页 > 60秒读懂世界 > C#中使用System.Security.Cryptography.Aes模块进行字符串加密解密

C#中使用System.Security.Cryptography.Aes模块进行字符串加密解密

一叶知秋2024-08-30 13:22:3760秒读懂世界18

C#中使用System.Security.Cryptography.Aes模块进行字符串加密解密

在C#中,System.Security.Cryptography.Aes是.NET框架提供的一个用于数据加密的类,它实现了AES(高级加密标准)算法。AES算法是一种对称密钥加密算法,它支持128位、192位和256位密钥长度。本文将详细介绍如何在C#中使用System.Security.Cryptography.Aes模块进行字符串的加密和解密。

C#中使用System.Security.Cryptography.Aes模块进行字符串加密解密

1. 引入命名空间

我们需要引入System.Security.Cryptography命名空间,以便使用AES类。

using System.Security.Cryptography;

2. 创建加密密钥和初始化向量

在AES加密过程中,我们需要一个密钥和一个初始化向量(IV)。密钥用于加密和解密数据,而IV用于增强加密的安全性。

byte[] key = Encoding.UTF8.GetBytes("your-256-bit-key");
byte[] iv = Encoding.UTF8.GetBytes("your-16-byte-iv");

注意,密钥和IV的长度必须符合AES的要求,256位密钥对应32个字节,IV需要16个字节。

3. 加密字符串

使用AES类进行加密,我们可以使用CreateEncryptor方法来创建一个加密器,然后使用TransformFinalBlock方法来加密数据。

public static string EncryptString(string plainText, byte[] key, byte[] iv)
{
    using (Aes aesAlg = Aes.Create())
    {
        aesAlg.Key = key;
        aesAlg.IV = iv;

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

        byte[] encrypted = encryptor.TransformFinalBlock(
            Encoding.UTF8.GetBytes(plainText),
            0,
            plainText.Length);

        return Convert.ToBase64String(encrypted);
    }
}

4. 解密字符串

解密过程与加密类似,但使用CreateDecryptor方法来创建解密器。

public static string DecryptString(string cipherText, byte[] key, byte[] iv)
{
    using (Aes aesAlg = Aes.Create())
    {
        aesAlg.Key = key;
        aesAlg.IV = iv;

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

        byte[] decryptedData = decryptor.TransformFinalBlock(
            Convert.FromBase64String(cipherText),
            0,
            cipherText.Length);

        return Encoding.UTF8.GetString(decryptedData);
    }
}

5. 使用示例

我们可以通过以下方式来使用上述方法进行加密和解密。

string original = "Here is some data to encrypt!";
string encrypted = EncryptString(original, key, iv);
string decrypted = DecryptString(encrypted, key, iv);

Console.WriteLine("Original:   " + original);
Console.WriteLine("Encrypted:   " + encrypted);
Console.WriteLine("Decrypted:   " + decrypted);

通过以上步骤,我们可以看到加密和解密的过程是安全的,并且可以确保数据的保密性。在使用AES加密时,确保密钥和IV的安全是非常重要的,因为任何拥有这些密钥的人都可以解密数据。

总结

System.Security.Cryptography.Aes模块为C#提供了强大的加密功能,通过本文的介绍,您应该能够理解如何在C#中使用AES进行字符串的加密和解密。在实际应用中,请确保密钥和IV的安全,以防止数据被未授权访问。

扫描二维码推送至手机访问。

版权声明:本站部分文章来自AI创作、互联网收集,请查看免责申明

本文链接:https://www.yyzq.team/post/381829.html

新工具上线:
分享给朋友: