c#怎么加密字符串

c#
小億
97
2024-09-13 12:49:36

在C#中,可以使用內(nèi)置的加密類庫(kù)來(lái)加密字符串。下面是一個(gè)使用AES加密算法的示例:

首先,需要引入System.Security.Cryptography命名空間。

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

接下來(lái),創(chuàng)建一個(gè)加密方法,如下所示:

public static string EncryptString(string plainText, byte[] key, byte[] iv)
{
    // 創(chuàng)建Aes對(duì)象
    using (Aes aes = Aes.Create())
    {
        // 設(shè)置加密參數(shù)
        aes.Key = key;
        aes.IV = iv;

        // 創(chuàng)建加密器
        ICryptoTransform encryptor = aes.CreateEncryptor();

        // 將待加密文本轉(zhuǎn)換為字節(jié)數(shù)組
        byte[] plainBytes = Encoding.UTF8.GetBytes(plainText);

        // 加密字節(jié)數(shù)組
        byte[] encryptedBytes = encryptor.TransformFinalBlock(plainBytes, 0, plainBytes.Length);

        // 將加密后的字節(jié)數(shù)組轉(zhuǎn)換為Base64字符串
        return Convert.ToBase64String(encryptedBytes);
    }
}

這個(gè)方法接受三個(gè)參數(shù):待加密的字符串(plainText),加密密鑰(key)和初始化向量(iv)。密鑰和初始化向量的長(zhǎng)度取決于所使用的加密算法。在AES加密中,密鑰和初始化向量通常為128位、192位或256位。

下面是一個(gè)使用此方法加密字符串的示例:

public static void Main()
{
    string plainText = "Hello, World!";

    // 生成AES密鑰和初始化向量
    using (Aes aes = Aes.Create())
    {
        aes.GenerateKey();
        aes.GenerateIV();

        // 加密字符串
        string encryptedText = EncryptString(plainText, aes.Key, aes.IV);
        Console.WriteLine("Encrypted text: " + encryptedText);
    }
}

這個(gè)示例首先生成一個(gè)AES密鑰和初始化向量,然后使用這些值調(diào)用EncryptString方法來(lái)加密字符串。加密后的字符串將以Base64格式輸出。

請(qǐng)注意,加密后的字符串可能包含特殊字符,因此在存儲(chǔ)或傳輸時(shí)可能需要進(jìn)行URL編碼或其他處理。同樣,在解密時(shí),需要確保使用相同的密鑰和初始化向量。

0