System.Security.Cryptography.CryptographicException: «Входные данные не являются полным блоком». C #

У меня есть код C #, который записывается в текстовый файл, где пароль, введенный пользователем, зашифровывается через AES с использованием EasyEncryption. У меня ключ и iv установлены на 128 бит, и шифрование работает нормально. Однако, когда я пытаюсь расшифровать пароль, я продолжаю получать сообщение о неполной блокировке.

        //PASSWORD IS BEING ENCRYPTED BEFORE SAVING TO TEXT FILE
        var keyValue = "/A?D(G+KbPeShVkY";
        var ivValue = "*G-KaPdSgVkYp3s5";
        var pEncryption = EasyEncryption.AES.Encrypt(PASSWORD, keyValue, ivValue);
        Console.WriteLine("\nPassword encrypted= " + pEncryption);
        file.WriteLine("password=" + pEncryption);

Это часть расшифровки, которая дает мне ошибку блока

        //PASSWORD DECRYPTION
        var keyValue = "/A?D(G+KbPeShVkY";
        var ivValue = "*G-KaPdSgVkYp3s5";
        var dcryPassword = EasyEncryption.AES.Decrypt(data["password"],keyValue, ivValue);

person Joshua Jaynes    schedule 22.02.2020    source источник
comment
Делает это: stackoverflow.com/questions/19614178/ справка?   -  person Athanasios Kataras    schedule 22.02.2020
comment
Попробуйте использовать код, которым поделился @Charles, и, если он работает, проверьте, где ваши данные [пароль] конвертируются по пути, как в примере в другом моем комментарии.   -  person Athanasios Kataras    schedule 22.02.2020


Ответы (2)


Я столкнулся с подобной проблемой, и ее можно было решить, наблюдая за вводимым текстом для метода decryt (), когда он некорректно сформирован.

вы также можете проверить то же самое.

person Krishna Bhanu Singh    schedule 22.02.2020

Хорошо, я наконец нашел решение. Я пытался расшифровать пароль прямо из файла блокнота, который по умолчанию читает UTF8. Я прочитал зашифрованный пароль, используя строку под названием rpass (пароль чтения), а затем использовал rpass для расшифровки. Работает как надо сейчас.

//Need to read from text UTF8 before trying to decrypt, == is padding
            string rpass = data["password"] + "==";
            Console.WriteLine(rpass);
            string dpass = Decrypt(rpass);
            Console.WriteLine("decryption= " + dpass);
person Joshua Jaynes    schedule 22.02.2020
comment
+ == - добавить отступ. Мой читаемый текстовый файл разделяет значения знаком =. - person Joshua Jaynes; 22.02.2020