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

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

Linda Hamilton
Freigeben: 2025-02-02 16:51:10
Original
653 Leute haben es durchsucht

Verwenden Sie C#und AES -Algorithmen, um die String

zu verschlüsseln und zu entschlüsseln

In diesem Artikel wird die String -String mit dem AES -Algorithmus (höherer Verschlüsselungsstandard (höherer Verschlüsselungsstandard) verschlüsselt und entschlüsselt. AES ist ein symmetrischer Verschlüsselungsalgorithmus, der eine starke Sicherheit bietet und häufig zum Schutz sensibler Daten verwendet wird.

rijndaelmanaged Klasse

.NET Framework bietet RijndaelManaged Klasse, nämlich die Host -Implementierung eines AES -Algorithmus. Es bietet Verschlüsselungs- und Entschlüsselungsmethoden.

using System.Security.Cryptography;

public class EncryptionManager
{
    private static byte[] _salt = /* 请在此处插入自定义salt */;

    public static string EncryptStringAES(string plainText, string sharedSecret)
    {
        if (string.IsNullOrEmpty(plainText) || string.IsNullOrEmpty(sharedSecret))
            throw new ArgumentNullException();

        using (var aesAlg = new RijndaelManaged())
        {
            // 使用共享密钥和salt生成密钥
            using (var key = new Rfc2898DeriveBytes(sharedSecret, _salt))
            {
                aesAlg.Key = key.GetBytes(aesAlg.KeySize / 8);
            }

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

            // 加密文本
            using (var msEncrypt = new MemoryStream())
            {
                using (var csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
                {
                    using (var swEncrypt = new StreamWriter(csEncrypt))
                    {
                        swEncrypt.Write(plainText);
                    }
                }

                // 将加密后的字节转换为base64字符串
                return Convert.ToBase64String(msEncrypt.ToArray());
            }
        }
    }

    public static string DecryptStringAES(string cipherText, string sharedSecret)
    {
        if (string.IsNullOrEmpty(cipherText) || string.IsNullOrEmpty(sharedSecret))
            throw new ArgumentNullException();

        using (var aesAlg = new RijndaelManaged())
        {
            // 使用共享密钥和salt生成密钥
            using (var key = new Rfc2898DeriveBytes(sharedSecret, _salt))
            {
                aesAlg.Key = key.GetBytes(aesAlg.KeySize / 8);
            }

            var cipherBytes = Convert.FromBase64String(cipherText);
            using (var msDecrypt = new MemoryStream(cipherBytes))
            {
                aesAlg.IV = ReadByteArray(msDecrypt);

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

                // 解密文本
                using (var csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
                {
                    using (var srDecrypt = new StreamReader(csDecrypt))
                    {
                        return srDecrypt.ReadToEnd();
                    }
                }
            }
        }
    }

    private static byte[] ReadByteArray(Stream s)
    {
        byte[] rawLength = new byte[sizeof(int)];
        s.Read(rawLength, 0, rawLength.Length);

        byte[] buffer = new byte[BitConverter.ToInt32(rawLength, 0)];
        s.Read(buffer, 0, buffer.Length);

        return buffer;
    }
}
Nach dem Login kopieren

How to Encrypt and Decrypt Strings in C# Using AES?
Dieser Code zeigt, wie die

-Klasses zur Implementierung von AES -Verschlüsselung und Entschlüsselung verwendet wird. Bitte beachten Sie, dass im Code durch einen benutzerdefinierten Salzwert ersetzt werden muss, um die Sicherheit zu verbessern. In diesem Beispiel wird den AES -Schlüssel aus dem gemeinsam genutzten Schlüssel und Salz abgeleitet. Die verschlüsselten Ergebnisse werden in Form von Base64 -String zurückgegeben, was für die Speicherung und Übertragung geeignet ist. Der Entschlüsselungsprozess wird umgekehrt, wodurch die Base64 -Zeichenfolge in Byte -Array umgewandelt und dann entschlüsselt wird.

Die Funktion wird verwendet, um IV (Initialisierungsvektor) aus dem Stream zu lesen. Denken Sie daran, mit potenziellen Abnormalitäten umzugehen. RijndaelManaged

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

Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage