Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk menyulitkan dan menyahsulit tali dalam C# menggunakan RijndaelManaged?

Bagaimana untuk menyulitkan dan menyahsulit tali dalam C# menggunakan RijndaelManaged?

Barbara Streisand
Lepaskan: 2025-02-02 17:01:09
asal
382 orang telah melayarinya

di C#, gunakan penyulitan algoritma rijndaelManaged dan penjelasan terperinci rentetan

How to Encrypt and Decrypt Strings in C# Using RijndaelManaged?

Artikel ini akan memperkenalkan secara terperinci bagaimana menggunakan algoritma RijndaelManaged dalam C#untuk menyulitkan dan menyahsulit rentetan.

Proses penyulitan

Pertama sekali, anda perlu memperkenalkan ruang penamaan

. Serpihan kod berikut menunjukkan cara menggunakan algoritma RijndaelManaged ditambah rentetan rumit:

System.Security.Cryptography

Proses penyahsulitan
using System.Security.Cryptography;

public class Encryption
{
    // 使用RijndaelManaged算法加密字符串
    public string EncryptString(string plainText, string sharedSecret)
    {
        // 从共享密钥和salt生成密钥
        Rfc2898DeriveBytes key = new Rfc2898DeriveBytes(sharedSecret, _salt);

        // 创建RijndaelManaged对象
        RijndaelManaged aesAlg = new RijndaelManaged();
        aesAlg.Key = key.GetBytes(aesAlg.KeySize / 8);

        // 创建加密器
        ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV);

        // 创建内存流来保存加密数据
        using (MemoryStream msEncrypt = new MemoryStream())
        {
            // 将IV写入流
            msEncrypt.Write(BitConverter.GetBytes(aesAlg.IV.Length), 0, sizeof(int));
            msEncrypt.Write(aesAlg.IV, 0, aesAlg.IV.Length);

            // 加密数据
            using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
            {
                using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
                {
                    swEncrypt.Write(plainText);
                }
            }

            // 将加密数据转换为base64字符串
            return Convert.ToBase64String(msEncrypt.ToArray());
        }
    }
}
Salin selepas log masuk

Decrypting dan penyulitan rentetan perlu menggunakan kekunci yang sama seperti yang disulitkan. Serpihan kod berikut menunjukkan cara menggunakan rentetan algoritma RijndaelManaged yang sama:

Sila ambil perhatian bahawa <需要> ia perlu ditakrifkan sebagai array byte dalam kod untuk keselamatan yang dipertingkatkan. Kod Lengkap juga perlu mengandungi pelaksanaan kaedah

. Ingat, memilih kunci perkongsian yang kuat adalah penting untuk keselamatan.
public string DecryptString(string cipherText, string sharedSecret)
{
    // 从共享密钥和salt生成密钥
    Rfc2898DeriveBytes key = new Rfc2898DeriveBytes(sharedSecret, _salt);

    // 创建RijndaelManaged对象
    RijndaelManaged aesAlg = new RijndaelManaged();
    aesAlg.Key = key.GetBytes(aesAlg.KeySize / 8);

    // 将密文从base64字符串转换
    byte[] bytes = Convert.FromBase64String(cipherText);

    // 创建内存流来保存解密数据
    using (MemoryStream msDecrypt = new MemoryStream(bytes))
    {
        // 从流中获取IV
        aesAlg.IV = ReadByteArray(msDecrypt);

        // 创建解密器
        ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV);

        // 解密数据
        using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
        {
            using (StreamReader srDecrypt = new StreamReader(csDecrypt))
            {
                // 从流中读取解密数据
                return srDecrypt.ReadToEnd();
            }
        }
    }
}
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk menyulitkan dan menyahsulit tali dalam C# menggunakan RijndaelManaged?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan