Поиск:

Ответ в темуСоздание новой темы Создание опроса
> СтрингГрид шифрование, Нужно зашифровать сетку. Разделители.  
:(
    Опции темы
Dapsssss
Дата 3.12.2009, 23:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 4.10.2009

Репутация: нет
Всего: нет



Добрый вечер. Нужно зашифровать сетку. Ниже приведён код. Есть кнопка. По нажатии данные стригнггрида записываются в файл. Используется разделитель запятой. Всё работает. Как осущесвить шифрование... Из мемо, ричь едита ит.д. шифрование у меня замечательно получается, а вот из стрингрида некак... Как поймать этот поток перед записью в тестовик??? Как осуществить шифрование?

Код

Баттнклиск:
{
   sdialogexe = 3 ;

  for(int i = 0 ; i<StringGrid1->RowCount ; i++)
   {
    Table1->Strings[i] = StringGrid1->Rows[i]->DelimitedText  ;
   }
    

 if(SaveDialog1->Execute())
  {
   SAVE = SaveDialog1->FileName ;
   Table1->SaveToFile(SAVE + ".txt") ;
  }


}


выше код кнопки.  

Решил пользоваться самым простым методом шифра:
Код
AnsiString XOR_Crypt(AnsiString in, AnsiString pass)
{
AnsiString out;
for (int x=1;x<in.Length()+1;x++)
        {
        out += (char)(in[x] ^ pass[x%pass.Length()+1]);
        }
return out;
}


С мемо всё просто например: Memo1->Text = XOR_Crypt("VVV\x0FRNTSBDR\x0FST","!"); - всё работает.

Или другой вариант:
Код

{
  AnsiString e=Memo1->Text, t="",m;
  int d=e.Length();
  char s;
  int i=1, ascii, diff;
  while (i<=d)
  {
    s=e[i];
    ascii = s;
    diff=Edit1->Text.ToInt()-ascii; // В эдите цифрвы в качестве пароля.
    m = (char)diff;
    t+=m;
    i++;
  }
}

Тут тоже всё работает безупречно...
А со стринггридом некак неразберуся...

Думал создать на форме мемо невидимую и в неё из стрингрида перепесывать данные а потом это мемо шифровать. Тоже не получилось. Поможете?   (В стрингриде колитчесво строк неизвестно каждый раз новое..  столбцов 10 всегда....) Был ещё также вариант уже сохранённый файл открывать и шифровать но неудобно получается..  

Приму любые коды, советы, выходы из ситуации...

Это сообщение отредактировал(а) dumb - 4.12.2009, 01:02
PM MAIL   Вверх
artsb
Дата 4.12.2009, 00:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



Dapsssss, в следующий раз используйте кнопку код.
Если я правильно вас понял, то что-то типа:
Код

// шифрование и сохранение
Table1->Clear();
for(int i=0; i<StringGrid1->RowCount; i++) {
 StringGrid1->Rows[i]->Delimiter = ',';
 Table1->Add(StringGrid1->Rows[i]->DelimitedText);
}
for(int i=0; i<Table1->Count; i++)
 Table1->Strings[i] = XOR_Crypt(Table1->Strings[i], "!");
Table1->SaveToFile(FileName);

// чтение и дешифрование
Table1->Clear();
Table1->LoadFromFile(FileName);
StringGrid1->RowCount = Table1->Count;
for(int i=0; i<Table1->Count; i++)
 Table1->Strings[i] = XOR_Crypt(Table1->Strings[i], "!");
for(int i=0; i<Table1->Count; i++) {
 StringGrid1->Rows[i]->Delimiter = ',';
 StringGrid1->Rows[i]->DelimitedText = Table1->Strings[i];
}

Конечно, можно упростить так:
Код

// шифрование и сохранение
Table1->Clear();
for(int i=0; i<StringGrid1->RowCount; i++) {
 StringGrid1->Rows[i]->Delimiter = ',';
 Table1->Add(XOR_Crypt(StringGrid1->Rows[i]->DelimitedText, "!"));
}
Table1->SaveToFile(FileName);
// чтение и дешифрование
Table1->Clear();
Table1->LoadFromFile(FileName);
StringGrid1->RowCount = Table1->Count;
for(int i=0; i<Table1->Count; i++) {
 StringGrid1->Rows[i]->Delimiter = ',';
 StringGrid1->Rows[i]->DelimitedText = XOR_Crypt(Table1->Strings[i], "!");
}


Это сообщение отредактировал(а) artsb - 5.12.2009, 14:38


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
Dapsssss
Дата 5.12.2009, 00:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 4.10.2009

Репутация: нет
Всего: нет



Спасиб. Сегодня уже не в силах. Завтра буду разбираться.
PM MAIL   Вверх
xvr
Дата 7.12.2009, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 48
Всего: 223



Учти, у тебя после шифрования все строки будут бинарными, в том числе они могут включать 0. Любая манипуляция с такими строками, которая хоть на мгновение переведет (или будет трактовать) их как С строки (с завершающим 0), тут же обрежет уже зашифрованные строки на середине

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0437 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.