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
308 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
<code class="language-csharp">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());
        }
    }
}</code>
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.
<code class="language-csharp">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();
            }
        }
    }
}</code>
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!

sumber:php.cn
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