Heim >Backend-Entwicklung >C++ >Wie verschlüsseln und entschlüsseln Sie Strings in C# mit Rijndaelmanaged?
In C#verwenden Sie die Verschlüsselung von Rijndaelmanaged Algorithmus und die detaillierte Erklärung
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
<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!