Мой ключ: GRa22IQfZEhyQspHlYbH298LL9ByAy/cqkncc563ErI=
Мой пароль это: JXg++525m7zDlr2HUrqkmwY29tOF8gK7hIUwT6mYzTk=
Я получаю исключение Get System.Security.Cryptography.CryptographicException в строке Plaintext = srDecrypt.ReadToEnd();< /код>. Надеюсь, кто-нибудь сможет мне помочь.
Большое спасибо!
Код: Выделить всё
public string Decrypt(string encryptedText, string password)
{
byte[] key, iv;
using (var sha256 = SHA256.Create())
{
byte[] passwordBytes;
try
{
passwordBytes = Convert.FromBase64String(password);
}
catch (FormatException)
{
Console.WriteLine("Das Passwort ist kein gültiger Base64-String.");
return string.Empty;
}
key = sha256.ComputeHash(passwordBytes);
}
try
{
byte[] encryptedBytes = Convert.FromBase64String(encryptedText);
Console.WriteLine($"Gesamtlänge der verschlüsselten Bytes: {encryptedBytes.Length}");
if (encryptedBytes.Length < 16)
{
throw new ArgumentException("Die verschlüsselten Daten sind zu kurz, um ein IV zu enthalten.");
}
iv = new byte[16];
Array.Copy(encryptedBytes, iv, iv.Length); // Extrahiert das IV aus den ersten 16 Bytes
byte[] actualEncryptedData = new byte[encryptedBytes.Length - iv.Length];
Array.Copy(encryptedBytes, iv.Length, actualEncryptedData, 0, actualEncryptedData.Length);
Console.WriteLine($"Länge der eigentlichen verschlüsselten Daten: {actualEncryptedData.Length}");
string plaintext = null;
using (Aes aesAlg = Aes.Create())
{
aesAlg.Key = key;
aesAlg.IV = iv;
ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV);
using (MemoryStream msDecrypt = new MemoryStream(actualEncryptedData))
{
using (CryptoStream csDecrypt =
new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
{
using (StreamReader srDecrypt = new StreamReader(csDecrypt))
{
plaintext = srDecrypt.ReadToEnd();
}
}
}
}
return plaintext;
}
catch (FormatException)
{
Console.WriteLine("Der verschlüsselte Text ist kein gültiger Base64-String.");
return string.Empty;
}
catch (ArgumentException ex)
{
Console.WriteLine($"Argumentfehler: {ex.Message}");
return string.Empty;
}
catch (CryptographicException ex)
{
Console.WriteLine($"CryptographicException: {ex.Message}");
return string.Empty;
}
catch (Exception ex)
{
Console.WriteLine($"Allgemeiner Fehler: {ex.Message}");
return string.Empty;
}
Крис
Подробнее здесь: https://stackoverflow.com/questions/790 ... decrypting