AkashDaniel Ответов: 1

Исключение плохих данных при расшифровке


Я использую алгоритм TripleDES для шифрования и дешифрования. Когда я пытаюсь расшифровать значение, оно показывает исключение плохих данных
Есть ли способ решить эту проблему?

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

Мой код:

public string EncryptTripleDES(string PlainText, string key)
        {
            ICryptoTransform encryptor = PCIDSS.CreateDES(key).CreateEncryptor();
            byte[] bytes = Encoding.Unicode.GetBytes(PlainText);
            return Convert.ToBase64String(encryptor.TransformFinalBlock(bytes, 0, bytes.Length));
            
        } 

public string DecryptTripleDES(string CypherText, string key)
        {

            byte[] inputBuffer = Convert.FromBase64String(CypherText);
            return Encoding.Unicode.GetString(PCIDSS.CreateDES(key).CreateDecryptor().TransformFinalBlock(inputBuffer, 0, inputBuffer.Length));

        }

1 Ответов

Рейтинг:
9

OriginalGriff

Проверь свой ключ, проверь капельницу. Если они выглядят так же, как те, что используются для шифрования, то начните с просмотра входных данных и кода, который их обрабатывает, а также выходного шифрования. Проверьте его длину как необработанные байтовые данные (то есть перед преобразованием в Base64) - она должна быть такой же или длиннее, чем входной файл.
Затем проверьте данные до и после преобразования из Base64. Сравните это с необработанными байтовыми данными сразу после шифрования (используйте двоичный или шестнадцатеричный компаратор).

Мы ничего не можем сделать для вас: у нас даже нет доступа к вашему ключу, не говоря уже о вводе или зашифрованных данных!


CPallini

5.

AkashDaniel

Сначала я создал это как класс, когда я запускаю его как приложение windows, оно работает, а затем я конвертирую его в .dll - файл и добавить в ссылку теперь он не работает.

OriginalGriff

И это должно помочь нам исправить это для вас?
Начните с сравнения кода для EXE-версии с версией DLL: убедитесь, что вы работаете с одним и тем же кодом и что он компилируется чисто, без ошибок и предупреждений.
Затем проверьте, что версия EXE все еще работает, и что тот же входной файл производит тот же массив байтов зашифрованных данных.

AkashDaniel

@originaGriff это прекрасно работает, но я ничего не сделал, я не знаю, как это работает сейчас.

OriginalGriff

"Я ничего не сделал" маловероятно - вполне возможно, что вы "что-то сделали", но не сочли это относящимся к проблеме. Но... если вы перестроили свое приложение, это может устранить проблему, если предыдущая компиляция не удалась и вы, например, неосознанно тестировали старый код.

Но если это работает, это хорошо. Если он снова выходит из строя, то у вас есть реальная проблема - периодические сбои, как известно, трудно исправить! :смеяться:

AkashDaniel

Ха-ха-ха,если снова возникнут какие-то проблемы, я приду к вам за помощью.