wersoo
@wersoo

Не могу избавиться от exception'а в реализации rijndael (AES) на C#?

Видимо глаз уже настолько замылился что не вижу очевидного или тут все совсем не очевидно?

Ключи везде одинаковые. Padding тоже.

Прошу помощи в определении причины и хотя бы указания вектора, в направлении которого искать решение. Спасибо.

// BinaryFormatter binFormat = new BinaryFormatter();
// List<DataTable> tables;
// [...]
using (Rijndael AES = Rijndael.Create())
{
    AES.Padding = PaddingMode.PKCS7;
    PasswordDeriveBytes pdb = new PasswordDeriveBytes(TablesController._baseKey, new byte[] { 0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76 });
    using (FileStream fStream = File.Open(TablesController._baseFileName, FileMode.OpenOrCreate, FileAccess.Write))
    {
        using (CryptoStream cStream = new CryptoStream(
            fStream,
            AES.CreateEncryptor(pdb.GetBytes(32), pdb.GetBytes(16)), CryptoStreamMode.Write))
        {
            binFormat.Serialize(cStream, tables);
        }
    }
}
using (Rijndael AES = Rijndael.Create())
{
    AES.Padding = PaddingMode.PKCS7;
    PasswordDeriveBytes pdb = new PasswordDeriveBytes(TablesController._baseKey, new byte[] { 0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76 });
    using (FileStream fStream = File.OpenRead(TablesController._baseFileName))
    {
        using (CryptoStream cStream = new CryptoStream(fStream, AES.CreateDecryptor(pdb.GetBytes(32), pdb.GetBytes(16)), CryptoStreamMode.Read))
        {
            object deserialized = binFormat.Deserialize(cStream);
            tables = deserialized as List<DataTable>;
        }   //  System.Security.Cryptography.CryptographicException не обработано 
            //  Message= Padding is invalid and cannot be removed (Заполнение неверно и не может быть удалено.)

    }
}
  • Вопрос задан
  • 4215 просмотров
Пригласить эксперта
Ответы на вопрос 1
VenomBlood
@VenomBlood
Приведенный код (если раскомментировать объявление и инициализировать tables) — полностью работоспособен.
Возможно виновата логика TablesController'a.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы