Я пытаюсь зашифровать string
и описать его с помощью AES
. Шифрование работало нормально, но я получаю сообщение об ошибке The input data is not a complete block
. Есть ли проблема с моим дополнением?Расшифровка AES Входные данные не являются полным блоком
var aes = System.Security.Cryptography.Aes.Create();
aes.GenerateKey();
aes.GenerateIV();
aes.Mode = CipherMode.CBC;
aes.Padding = PaddingMode.PKCS7;
var desEncrypter = aes.CreateEncryptor();
var buffer = System.Text.ASCIIEncoding.ASCII.GetBytes(text);
finalV = Convert.ToBase64String(desEncrypter.TransformFinalBlock(buffer, 0, buffer.Length));
var desDecrypter = aes.CreateDecryptor();
var buff = System.Text.Encoding.ASCII.GetBytes(finalV);
var origValue = desDecrypter.TransformFinalBlock(buff , 0, buff .Length);
Спасибо, я исправил это. Теперь я могу преобразовать дешифрованное значение в 'byte []'. Кажется, я не могу преобразовать это в строку. Я попытался вызвать 'System.Text.Encoding.UTF8.GetString()', который должен принимать 'byte []', но я все еще получаю эту ошибку. – mysticalstick
Ваш 'buff' не имеет никакого значения в качестве строки. Это encypted текст. Предполагая, что ваш код шифрования в порядке, тогда 'origValue' представляет ваше расшифрованное значение. Предполагая, что изначально была строка, это тот, который вам нужно вызвать: 'string decryptedText = Encoding.UTF8.GetString (origValue)'. –
yes Я пробовал это, но получаю сообщение 'не может неявно преобразовать из строки в байт []'. Я напечатал тип 'origValue', чтобы проверить это раньше, и это' System.byte [] 'Я не знаю, откуда может возникнуть ошибка типа. – mysticalstick