Дешифрование с помощью алгоритма Райндеала дает ошибку заполнения

Я использую Rijndeal для шифрования и дешифрования некоторых данных! но это дает мне эту ошибку:

Заполнение недействительно и не может быть удалено.

Я много искал, но ничего не помогло мне решить эту ошибку! Это мои коды шифрования / дешифрования:

public string Encrypt(string text)
    {

        mainRM = new System.Security.Cryptography.RijndaelManaged();
        mainRM.BlockSize = 256;
        mainRM.KeySize = 256;
        memorystream = new System.IO.MemoryStream();
        ICryptoTransform icrypt = mainRM.CreateEncryptor(key, iv);
        CryptoStream cryptstream = new CryptoStream(memorystream, icrypt, CryptoStreamMode.Write);
        cryptstream.FlushFinalBlock();
        System.IO.StreamWriter sw = new System.IO.StreamWriter(cryptstream);
        sw.Write(text);
        return Convert.ToBase64String(memorystream.ToArray());
    }

    public string Decrypt(string CryptedText)
    {
        string custinfo;
        System.IO.StreamReader streamreader;
        mainRM = new RijndaelManaged();
        mainRM.BlockSize = 256;
        mainRM.KeySize = 256;
        memorystream = new System.IO.MemoryStream(Convert.FromBase64String(CryptedText));
        ICryptoTransform icrypt = mainRM.CreateDecryptor(key, iv);
        memorystream.Position = 0;
        CryptoStream cryptstream = new CryptoStream(memorystream, icrypt, CryptoStreamMode.Read);
        cryptstream.FlushFinalBlock();
        streamreader = new System.IO.StreamReader(cryptstream);
        custinfo = streamreader.ReadToEnd();
        return custinfo;
    }

Может кто-нибудь мне помочь?

1 ответ

Установите сторону дешифрования без заполнения. Расшифруйте и посмотрите, что вы добавили в конец вашего открытого текста. Это скажет вам, что дополняет сторона шифрования. Измените сторону шифрования, чтобы явно установить это заполнение, и измените сторону дешифрования, чтобы явно ожидать того же заполнения.

В качестве альтернативы установите оба параметра в дополнение к PKCS7 (иначе PKCS5). Вы должны иметь одинаковые отступы с обеих сторон.

Другие вопросы по тегам