Получить System.Security.Cryptography.CryptographicException при расшифровкеC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Получить System.Security.Cryptography.CryptographicException при расшифровке

Сообщение Anonymous »

Я использую .NET Framework 4.8 и получаю исключение при расшифровке своего ключа.
Мой ключ: 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»