Поиск:

Ответ в темуСоздание новой темы Создание опроса
> записываю зашифрованный текст в BLOB поле firebird 
V
    Опции темы
cmygeHm
  Дата 3.6.2009, 08:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Добрый день.
Помогите пожалуйста со следующей проблемой:
Зашивровываю текст функцией, которая возвращает указатель типа BYTE и длину зашифрованного текста. Смотрю в в дебагере, что зашифрованный текст выглядит так : "0‚\aЅ\x06\t*†H†ч\r\x01\a\x03 ‚\a®0‚\aЄ\x02\x01"
Далее, когда считываю с базы получается на символ больше: "0‚\aЅ\x06\t*†H†ч\r\n\x01\a\x03 ‚\a®0‚\aЄ\x02\x01". Заметьте, что после \r появилась \n.

Вопрос: как правильно записать в BLOB поле???

Запись я делаю так:
Код

                char *buf=resTMessageStruct.pbSignedAndEncryptedBlob;  //здесь "0‚\aЅ\x06\t*†H†ч\r\x01\a\x03 ‚\a®0‚\aЄ\x02\x01"
        AnsiString ciphertext(buf); // и здесь "0‚\aЅ\x06\t*†H†ч\r\x01\a\x03 ‚\a®0‚\aЄ\x02\x01"
        AnsiString QueryString="insert into messages (TEXT, CLIENT_TO, CLIENT_FROM) values ('"+ciphertext+"','"+login_to+"','"+login+"');"; 
                        //  и даже здесь все правильно.
        IBQuery1->SQL->Add (QueryString);


А считываю так:
Код


TByteDynArray b=IBQuery1->FieldByName("TEXT")->AsBytes; // А здесь уже с ошибкой: "0‚\aЅ\x06\t*†H†ч\r\n\x01\a\x03 ‚\a®0‚\aЄ\x02\x01"



Помогите пожалуйста! Эта последняя проблем в моем дипломе.
PM MAIL   Вверх
Alca
Дата 3.6.2009, 09:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Так удали это символ.

Добавлено через 1 минуту и 33 секунды
Цитата

Вопрос: как правильно записать в BLOB поле???

Можно стримы юзать: TMemoryStream.


--------------------
PM WWW ICQ Skype Jabber   Вверх
cmygeHm
  Дата 3.6.2009, 09:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



хочешь сказать чтобя я одно и тоже сообщение зашифровывал и каждый раз удалял \n ???

Добавлено через 49 секунд
можно юзать но я не понимаю как
PM MAIL   Вверх
Alca
Дата 3.6.2009, 09:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата

можно юзать но я не понимаю как

http://develope-it.com/tag/blob-polya
http://forum.vingrad.ru/forum/topic-237984.html

Добавлено @ 09:19
Цитата

хочешь сказать чтобя я одно и тоже сообщение зашифровывал и каждый раз удалял \n ???

Может это БД добавляет '\r\n' в конец делает концовку '\r\n'? Я не в курсах, не работал с птицей, тока мое предположение

Добавлено @ 09:20
http://www.devrace.com/ru/fibplus/articles/2261.php

Это сообщение отредактировал(а) Alca - 3.6.2009, 09:30


--------------------
PM WWW ICQ Skype Jabber   Вверх
cmygeHm
Дата 3.6.2009, 09:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



добавляется только \n. сейчас посмотрю ссылки.
PM MAIL   Вверх
mrbrooks
Дата 3.6.2009, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


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

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



Цитата(Alca @  3.6.2009,  09:04 Найти цитируемый пост)
Можно стримы юзать: TMemoryStream

думаю больше подойдет TStringStream
PM MAIL   Вверх
cmygeHm
Дата 3.6.2009, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Запись сделал так :

Код


        TMemoryStream *M1 = new TMemoryStream();         // создал поток
        M1->Write(resTMessageStruct.pbSignedAndEncryptedBlob, pcbSignedAndEncryptedBlob);        // записал в поток зашифрованный текст

// первая переменная указатель типа BYTE
// вторая - длина моего зашифрованного сообщения.

// ну и в принципе запрос:
        AnsiString s="INSERT INTO MESSAGES (TEXT, CLIENT_TO, CLIENT_FROM)  VALUES (:TEXT,:to,:from);";
        IBQuery1->SQL->Text=s;
        IBQuery1->ParamByName("to")->AsAnsiString = login_to;
        IBQuery1->ParamByName("from")->AsAnsiString = login;
        IBQuery1->ParamByName("TEXT")->LoadFromStream(M1, ftBlob);
        IBQuery1->ExecSQL();                                         



чуть позже напишу, когда прочту таким же методом. сейчас же старым методом уже читает правильно.

 smile 

Это сообщение отредактировал(а) cmygeHm - 3.6.2009, 11:20
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

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


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

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


 




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


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

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