Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.12.2013, 20:17   #1
Dr.Pauliss
Пользователь
 
Регистрация: 26.05.2011
Сообщений: 22
Радость Преобразовать строку (результат дешифровки AES)

Здравствуйте.
Не знаю как сформулировать вопрос. В общих чертах вот как:

Есть строка (string decodeParam), получаемая в результате неких преобразований (AES дешифровка), содержащая параметр. И длина строки кратна 16 (насколько я заметил), как контейнер. В строке есть параметр, например длиной 9 символов, а остальное заполняется пробелами. И я не могу избавится от пробелов (вытащить из контейнера этот параметр).

Вот код, который выводит некоторую информацию о этих строках:
Код:
string decodeParam = Enigma.DecryptStringFromBytes(Convert.FromBase64String(tblSqlCreate.Rows[i][String.Format("param{0}", j)].ToString()), Encoding.UTF8.GetBytes(Enigma.Key), Encoding.UTF8.GetBytes(Enigma.IV));
Console.WriteLine("Decoded: |{0}| Length:{1} Trim:|{2}|", decodeParam, decodeParam.Length, decodeParam.Trim());
Вывод консоли:
Код:
Decoded: |ParameterZero   | Length:16 Trim:|ParameterZero   |
Decoded: |ParameterTwo2   | Length:16 Trim:|ParameterTwo2   |
Decoded: |AchtParameter88888888           | Length:32 Trim:|AchtParameter8888888
8           |
На выводе видно, что есть некое пространство, заполненное пробелами. Мне нужен сам текст (Parameter), я не могу его никак получить.
Подскажите пож-та как это можно сделать.

Код получения строки это:
Код:
using System.Security.Cryptography;
...
  /// <summary>
            /// AES decryption
            /// </summary>
            public static string DecryptStringFromBytes(byte[] cipherText, byte[] Key, byte[] IV)
            {
                // Check arguments.
                if (cipherText == null || cipherText.Length <= 0)
                    throw new ArgumentNullException("cipherText");
                if (Key == null || Key.Length <= 0)
                    throw new ArgumentNullException("Key");
                if (IV == null || IV.Length <= 0)
                    throw new ArgumentNullException("Key");

                // Declare the string used to hold
                // the decrypted text.
                string plaintext = null;

                // Create an RijndaelManaged object
                // with the specified key and IV.
                using (RijndaelManaged rijAlg = new RijndaelManaged())
                {
                    rijAlg.Key = Key;
                    rijAlg.IV = IV;
                    rijAlg.Mode = Enigma.Mode;
                    rijAlg.Padding = Enigma.Padding;

                    // Create a decrytor to perform the stream transform.
                    ICryptoTransform decryptor = rijAlg.CreateDecryptor(rijAlg.Key, rijAlg.IV);

                    // Create the streams used for decryption.
                    using (MemoryStream msDecrypt = new MemoryStream(cipherText))
                    {
                        using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
                        {
                            using (StreamReader srDecrypt = new StreamReader(csDecrypt))
                            {

                                // Read the decrypted bytes from the decrypting stream
                                // and place them in a string.
                                plaintext = srDecrypt.ReadToEnd();
                            }
                        }
                    }

                }
                return plaintext;
                
            }

        }
На вход ему попадают вот такое из mySQL (AES 128bit CBC Zeros):
X3nhnP2wC/XLWVGw529opA==
tV/L9WMt/VRde2X756RoDQ==
g1/EOqhBiQfSpD76N1kQw+2+zrUmIcmaBUZYk3 5gvW8=


P.S. Мне необходимо эти параметры вставлять в batch. На данный момент выходит так:
Код:
(start autorun.bat "ParameterZero   " "undefined" "ParameterTwo2   " ...... "AchtParameter8888888
8           ")
. И batсh не срабатывает из-за этих пробелов... Я думаю (насколько сейчас соображаю после четырёх часов гугления и неудачных попыток преобразовать строки и получить этот заветный параметр)))) суть в строках, нежели в самом дешифраторе... Подскажите, кто чем может...
Dr.Pauliss вне форума Ответить с цитированием
Старый 12.12.2013, 17:31   #2
Dr.Pauliss
Пользователь
 
Регистрация: 26.05.2011
Сообщений: 22
Радость Ответ.

Сообщение от Grishaco
Посмотрите в дебаге на строчку, там обычно отображаются спец символы. Только смотрите наведя мышку на переменную.


В дебаге пишет:

"ParameterZero\0\0\0"
"ParameterTwo2\0\0\0"
"AchtParameter88888888\0\0\0\0\0\0\ 0\0\0\0\0"

type string.

Сообщение от Grishaco
Это Нуль-символ.

Код:
string a = "AchtParameter88888888\0\0\0\0\0\0\0\0\0\0\0";
            a = a.Replace("\0", "");
Dr.Pauliss вне форума Ответить с цитированием
Старый 12.12.2013, 18:03   #3
Dr.Pauliss
Пользователь
 
Регистрация: 26.05.2011
Сообщений: 22
Радость Приложение 1

Управляющие символы ASCII (http://ru.wikipedia.org/wiki/%D0%A3%...BE%D0%BB%D1%8B)

Цитата:
Номер Английское название Русское название slash последовательность
00 NULL пустой символ \0

Этот символ ничего не делает. Некоторые терминалы изображают его как пробел, но это неправильно. Часто NULL используют для обозначения конца цепочки символов (например, в языке C).
Dr.Pauliss вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Преобразовать строку символов в массив yurets17 Общие вопросы C/C++ 8 30.10.2013 13:36
Преобразовать строку в число hon Паскаль, Turbo Pascal, PascalABC.NET 4 10.10.2012 18:44
Преобразовать исходную строку. Delphi BelialL Помощь студентам 4 21.11.2010 15:27
столбец преобразовать в строку 0mega Microsoft Office Excel 6 03.02.2010 07:29
Как преобразовать UINT в строку? Сильванович Михаил Общие вопросы C/C++ 2 12.07.2007 09:58