Member 10302971 Ответов: 1

Длина данных для расшифровки недопустима


public string Decrypt(string toDecrypt, string key, bool useHashing)
        {
            byte[] toEncryptArray = Convert.FromBase64String(toDecrypt);
            byte[] keyArray;
            if (useHashing)
            {
                MD5CryptoServiceProvider hashmd5 = new MD5CryptoServiceProvider();
                keyArray = hashmd5.ComputeHash(Encoding.UTF8.GetBytes(key));
            }
            else
            {
                keyArray = Encoding.UTF8.GetBytes(key);
            }
            TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider
            {
                Key = keyArray,
                Mode = CipherMode.ECB,
                Padding = PaddingMode.PKCS7
            };
            ICryptoTransform cTransform = tdes.CreateDecryptor();
            byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
            return Encoding.UTF8.GetString(resultArray);
        }


Что я уже пробовал:

ошибка: byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Длина);- - - > длина данных для расшифровки недопустима

текст успешно шифруется, но при расшифровке он дает мне криптографическое исключение " длина данных для расшифровки недопустима"

Не могли бы вы помочь мне с этим??

спасибо

1 Ответов

Рейтинг:
7

CPallini

Вы использовали его при шифровании, PaddingMode.Нет[^]?
Смотрите, например: Длина данных для расшифровки недопустима[^].


Member 10302971

Обивка = PaddingMode.Pkcs7 в
Режим = CipheMode.ЕЦБ

Member 10302971

это мой проект https://www.mediafire.com/?gw64nf1j18zdt59

пожалуйста, помогите мне. спасибо