System.Security.Cryptography.CryptographicException: «Входные данные не являются полным блоком». C# - PullRequest
0 голосов
/ 22 февраля 2020

У меня есть 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);

Ответы [ 2 ]

0 голосов
/ 22 февраля 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);
0 голосов
/ 22 февраля 2020

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

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

...