Heim >Backend-Entwicklung >C++ >Wie verschlüsseln und entschlüsseln Sie Strings in C# mit Rijndaelmanaged?

Wie verschlüsseln und entschlüsseln Sie Strings in C# mit Rijndaelmanaged?

Barbara Streisand
Barbara StreisandOriginal
2025-02-02 17:01:09311Durchsuche

In C#verwenden Sie die Verschlüsselung von Rijndaelmanaged Algorithmus und die detaillierte Erklärung

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

In diesem Artikel wird ausführlich vorgestellt, wie der Rijndaelmanaged -Algorithmus in C#verwendet wird, um die Zeichenfolge zu verschlüsseln und zu entschlüsseln.

Der Verschlüsselungsprozess

Zunächst müssen Sie

Namensraum einführen. Das folgende Codefragment zeigt, wie der Rijndaelmanaged -Algorithmus sowie eine komplizierte Zeichenfolge verwendet wird:

System.Security.Cryptography

Der Entschlüsselungsprozess
<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>

Entschlüsseln und Verschlüsselungszeichenfolge muss denselben gemeinsam genutzten Schlüssel wie beim Verschlüsselung verwenden. Das folgende Codefragment zeigt, wie die gleiche rijndaelmanaged -Algorithmus -Zeichenfolge verwendet wird:

Bitte beachten Sie, dass es als Byte -Array im Code für erweiterte Sicherheit definiert werden muss. Der vollständige Code muss auch die Implementierung der

-Methode enthalten. Denken Sie daran, dass die Auswahl eines starken Teilenschlüssels für die Sicherheit von wesentlicher Bedeutung ist.
<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>

Das obige ist der detaillierte Inhalt vonWie verschlüsseln und entschlüsseln Sie Strings in C# mit Rijndaelmanaged?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn