Проблема с кодировкой кириллицы

271
02 июля 2018, 01:00

Производится шифрование текста в изображение (цифровая стеганография, метод LSB). Но при расшифровке текста из изображения (именно кириллицы), мне выводит набор разных невнятных символов и цифр.
Но при этом у меня так же есть идентичное приложение, но текст изначально шифруется криптографическим методом, а потом его результат вшивается в изображение. В таком случае все прекрасно работает. А при обычном шифровании нет. Что за проблема? Тогда использовал Encoding.Default и все работало, в этом случае не работает ни Default, ни UTF-8... Ниже представлен код, как я шифрую текст в изображение.

[HttpPost]
    public ActionResult EncryptedOnly(HttpPostedFileBase upload1, HttpPostedFileBase upload2)
    {
        var baseLocation = Server.MapPath("~/Files/");
        var fileName1 = GetUniqueFileName(upload1.FileName);
        var fileLocation1 = Path.Combine(baseLocation, fileName1);
        upload1.SaveAs(fileLocation1);
        var fileName2 = GetUniqueFileName(upload2.FileName);
        var fileLocation2 = Path.Combine(baseLocation, fileName2);
        upload2.SaveAs(fileLocation2);

        Image image = Image.FromStream(upload2.InputStream);
        image.Save(fileLocation2);
        string imagePath = fileLocation2;
        Bitmap bmp = new Bitmap(imagePath);
        StreamReader sr = new StreamReader(fileLocation1, Encoding.Default);
        string text = sr.ReadToEnd();
        Bitmap bmp1 = SteganoHelper.embedText(text, bmp);
        arr = bmp1.ToByteArray(ImageFormat.Png);
        MemoryStream ms = new MemoryStream(arr);
        Image imageResult = Image.FromStream(ms);
        var fileNameRes = "res.png";
        var fileLocationRes = Path.Combine(baseLocation, fileNameRes);
        imageResult.Save(fileLocationRes);
        TempData["ImageLocationOnly"] = fileNameRes;
        return RedirectToAction("PreviewOnly");
    }

А так же расшифровка:

[HttpPost]
    public ActionResult DecryptedOnly(HttpPostedFileBase upload)
    {
        string extractedText;
        string fileName = GetUniqueFileName(upload.FileName);
        Image image = Image.FromStream(upload.InputStream);
        image.Save(Server.MapPath("~/Files/" + fileName));
        string imagePath = Server.MapPath("~/Files/" + fileName);
        Bitmap bmp = new Bitmap(imagePath);

        var baseLocation = Server.MapPath("~/Text/");
        var fileNameRes = GetUniqueFileName("res.txt");
        var fileLocationRes = Path.Combine(baseLocation, fileNameRes);
        try
        {
            extractedText = SteganoHelper.extractText(bmp);
            System.IO.File.AppendAllText(fileLocationRes, extractedText, Encoding.Default);
            TempData["FileLocationOnly"] = fileLocationRes;
            return RedirectToAction("PreviewDecryptOnly");
        }
        catch
        {
            extractedText = "Wrong password";
            System.IO.File.AppendAllText(fileLocationRes, extractedText, Encoding.Default);
            TempData["FileLocationOnly"] = fileLocationRes;
            return RedirectToAction("PreviewDecryptOnly");
        }
    }
READ ALSO
Бинарный поиск строки в массиве байт на C#

Бинарный поиск строки в массиве байт на C#

У меня есть бинарный файл, в котором лежат одноразмерные объекты (с именем пользователя) отсортированные по имени пользователяЕсть чужой...

310
Как задать точные координаты обьекта c#?

Как задать точные координаты обьекта c#?

Есть обьект, который двигается, и при прикосновении к стороне окна продолжает движение в другую сторонуТакже созданы обьекты(а1, а2), слева...

255
Индекс за пределами диапазона C# XPath

Индекс за пределами диапазона C# XPath

При парсе с html информацию, появляется ошибка

248
Npgsql работа с курсором

Npgsql работа с курсором

Как организовать просмотр по 100 записей из таблицы с помощью npgsqlПри просмотре хотелось бы ходить по курсору т

242