Verschlüsseln und Entschlüsseln einer Zeichenkette in C#
-
Verschlüsseln einer Zeichenkette mit der Klasse
AesManaged
inC#
-
Entschlüsseln einer Zeichenkette mit der Klasse
AesManaged
inC#
In diesem Lernprogramm werden Methoden zum Ver- und Entschlüsseln einer Zeichenkette in C# erläutert.
Verschlüsseln einer Zeichenkette mit der Klasse AesManaged
in C#
Bei der Verschlüsselung werden Daten in Chiffretext konvertiert, sodass nicht autorisierte Personen nicht auf die Daten zugreifen können. In diesem Tutorial verwenden wir den AES-Algorithmus (Advanced Encryption Standard
), um eine Zeichenkette in C# zu verschlüsseln und zu entschlüsseln. Die AesManaged
-Klasse bietet Methoden zum Ver- und Entschlüsseln unserer Zeichenkette mithilfe des AES-Algorithmus. Die Funktion CreateEncryptor()
kann Daten mit einem Schlüssel verschlüsseln. Wir müssen unsere String-Schlüssel an die Funktion CreateEncryptor()
übergeben. Das folgende Codebeispiel zeigt, wie eine Zeichenkette nach dem AES-Algorithmus mit der Funktion CreateEncryptor()
in C# verschlüsselt wird.
using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
namespace encrypt_decrypt_string {
class Program {
static string Encrypt() {
try {
string textToEncrypt = "WaterWorld";
string ToReturn = "";
string publickey = "12345678";
string secretkey = "87654321";
byte[] secretkeyByte = {};
secretkeyByte = System.Text.Encoding.UTF8.GetBytes(secretkey);
byte[] publickeybyte = {};
publickeybyte = System.Text.Encoding.UTF8.GetBytes(publickey);
MemoryStream ms = null;
CryptoStream cs = null;
byte[] inputbyteArray = System.Text.Encoding.UTF8.GetBytes(textToEncrypt);
using (DESCryptoServiceProvider des = new DESCryptoServiceProvider()) {
ms = new MemoryStream();
cs = new CryptoStream(ms, des.CreateEncryptor(publickeybyte, secretkeyByte),
CryptoStreamMode.Write);
cs.Write(inputbyteArray, 0, inputbyteArray.Length);
cs.FlushFinalBlock();
ToReturn = Convert.ToBase64String(ms.ToArray());
}
return ToReturn;
} catch (Exception ex) {
throw new Exception(ex.Message, ex.InnerException);
}
}
static void Main(string[] args) {
string encrypted = Encrypt();
Console.WriteLine(encrypted);
}
}
}
Ausgabe:
6+PXxVWlBqcUnIdqsMyUHA==
Im obigen Code haben wir die Zeichenkette WaterWorld
mit den Schlüsseln publickey
und secretkey
verschlüsselt und die Zeichenkette 6+PXxVWlBqcUnIdqsMyUHA==
als verschlüsselte Zeichenkette zurückgegeben. Beide Schlüssel müssen mindestens 8 Zeichen lang sein.
Entschlüsseln einer Zeichenkette mit der Klasse AesManaged
in C#
Bei der Entschlüsselung wird der Chiffretext wieder in die Originaldaten konvertiert, sodass autorisierte Personen auf die Daten zugreifen können. Die Funktion CreateDecryptor()
kann Daten mit einem Schlüssel entschlüsseln. Wir müssen unsere String-Schlüssel an die Funktion CreateEncryptor()
übergeben. Die Schlüssel müssen mit denen übereinstimmen, die in der Funktion CreateDecryptor()
verwendet werden. Das folgende Codebeispiel zeigt, wie eine Zeichenkette nach dem AES-Algorithmus mit der Funktion CreateDecryptor()
in C# verschlüsselt wird.
using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
namespace encrypt_decrypt_string {
class Program {
static string Decrypt() {
try {
string textToDecrypt = "6+PXxVWlBqcUnIdqsMyUHA==";
string ToReturn = "";
string publickey = "12345678";
string secretkey = "87654321";
byte[] privatekeyByte = {};
privatekeyByte = System.Text.Encoding.UTF8.GetBytes(secretkey);
byte[] publickeybyte = {};
publickeybyte = System.Text.Encoding.UTF8.GetBytes(publickey);
MemoryStream ms = null;
CryptoStream cs = null;
byte[] inputbyteArray = new byte[textToDecrypt.Replace(" ", "+").Length];
inputbyteArray = Convert.FromBase64String(textToDecrypt.Replace(" ", "+"));
using (DESCryptoServiceProvider des = new DESCryptoServiceProvider()) {
ms = new MemoryStream();
cs = new CryptoStream(ms, des.CreateDecryptor(publickeybyte, privatekeyByte),
CryptoStreamMode.Write);
cs.Write(inputbyteArray, 0, inputbyteArray.Length);
cs.FlushFinalBlock();
Encoding encoding = Encoding.UTF8;
ToReturn = encoding.GetString(ms.ToArray());
}
return ToReturn;
} catch (Exception ae) {
throw new Exception(ae.Message, ae.InnerException);
}
}
static void Main(string[] args) {
string decrypted = Decrypt();
Console.WriteLine(decrypted);
}
}
}
Ausgabe:
WaterWorld
Im obigen Code haben wir die verschlüsselte Zeichenkette 6+PXxVWlBqcUnIdqsMyUHA==
aus dem vorherigen Beispiel zurück in ihre ursprüngliche Form WaterWorld
mit den Schlüsseln publickey
und secretkey
konvertiert. Die Schlüssel müssen mit den im vorherigen Beispiel verwendeten Schlüsseln übereinstimmen, damit diese Methode funktioniert.
Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.
LinkedInVerwandter Artikel - Csharp String
- C# Int in String konvertieren
- C# String in Enum konvertieren
- Verwendung von Strings in der Switch-Anweisung in C#
- So konvertieren Sie eine Zeichenkette in ein Byte-Array in C#
- Wie konvertiert man eine Zeichenkette in C# in boolesche Zeichenketten
- Wie schreibt man ein mehrzeiliges String-Literal in C#