Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Еще раз про шифрование 
V
    Опции темы
mspuz
Дата 24.3.2006, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Знаю, знаю - тем про шифрование немерено, но у меня вопрос немного другого плана. Занимаюсь написанием совместного проекта и большая его часть должна быть написана и согласована вместе с другими. Пришел черед, как мы будем хранить пароли - их нужно хранить в зашифрованном виде. Вопрос как шифровать и вот наш мега-программист говорит что у него есть такая вот процедура:
Код

procedure TForm1.CompressStream(inpStream, outStream: TStream);
var
  InpBuf, OutBuf: Pointer;
  InpBytes, OutBytes: Integer;
begin
  InpBuf := nil;
  OutBuf := nil;
  try
    GetMem(InpBuf, inpStream.Size);
    inpStream.Position := 0;
    InpBytes := inpStream.Read(InpBuf^, inpStream.Size);
    CompressBuf(InpBuf, InpBytes, OutBuf, OutBytes);
    outStream.Write(OutBuf^, OutBytes);
  finally
    if InpBuf <> nil then FreeMem(InpBuf);
    if OutBuf <> nil then FreeMem(OutBuf);
  end;
end;

Которая шифрует данные, но насколько я понял сдесь происходит сжатие потока данных, на что он мне ответил - "Шифруется как раз во время сжатия.". Но так и не смог вразумительно объяснить смысл этой процедуры. Так где здесь шифрование, насколько оно надежное (если оно есть) и как мне например зашифровать Edit.Text, который напечатал пользователь???? Спасибо, даже если Вы все это прочитали smile
PM MAIL   Вверх
Guedda
Дата 24.3.2006, 11:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


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

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



Помещай строку в Tstream и проделывай операции.
Да, действительно. Он берет байты TStream, кладет их в буфер, и в буфере сжимает.
Да. Такой метод шифрования нормальный.
Добавлено @ 11:24
и в разделе finally просто необходимо освободить память... Зачем это условие?


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
Snowy
Дата 24.3.2006, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

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



Никаким шифрованием здесь и не пахнет.
Обычная Gzip компрессия.
Все "шифрование" заключается в том, что данные будут не в открытом виде, а в сжатом.
PM MAIL   Вверх
_hunter
Дата 24.3.2006, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



шифрование тут в CompressBuf().
оно абсолютно ненадежно -- ЦРУ вскроет меньше чем за час.
передать текст в TStream и вызвать для него CompressStream()


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Snowy
Дата 24.3.2006, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

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



Шифрование пароля обсуждалось буквально вчера:
http://forum.vingrad.ru/index.php?showtopi...st&p=680266
Цитата(_hunter @ 24.3.2006, 11:27 Найти цитируемый пост)
оно абсолютно ненадежно -- ЦРУ вскроет меньше чем за час.
Я вскрою за полчаса smile
PM MAIL   Вверх
mspuz
Дата 24.3.2006, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



_hunter, А можно примерчик, как передать в поток строку едита и как результат этой процедуры передать стринговой переменной???
PM MAIL   Вверх
Guedda
Дата 24.3.2006, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


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

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



Тебе сюда

Это сообщение отредактировал(а) Guedda - 24.3.2006, 11:33


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
Snowy
Дата 24.3.2006, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

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



Guedda, а поближе ничего не нашел?
http://forum.vingrad.ru/index.php?act=Sear...ib&skipped=
У нас на форуме тонны примеров.
PM MAIL   Вверх
_hunter
Дата 24.3.2006, 11:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



mspuz, справку по TStream ( и его метода Read/Write ) почитай...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
mspuz
Дата 24.3.2006, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Последний вопрос - как считать в стринговую переменную поток??? Ну ни как не могу разобраться smile
PM MAIL   Вверх
Snowy
Дата 24.3.2006, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

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



В поток:
Код
Stream.Write(s[1], Length(s));


Из потока:
Код
SetLength(s, Stream.Size);
Stream.Read(s[1], Length(s));

PM MAIL   Вверх
mspuz
Дата 24.3.2006, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Snowy, Не - это строка в поток, а мне надо наоборот - из потока в строку.
PM MAIL   Вверх
Snowy
Дата 24.3.2006, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

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



Если в стриме есть другие данные, кроме стринга, то так:

В стрим:
Код
var
  b: word;
begin
  b := Length(s);
  Stream.Write(b, SizeOf(b));
  Stream.Write(s[1], b);
end;


Из стрима:
Код
var
  b: word;
begin
  Stream.Read(b, SizeOf(b));
  SetLength(s, b);
  Stream.Read(s[1], b);
end;

PM MAIL   Вверх
mspuz
Дата 24.3.2006, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Snowy, Интересно получается передаю

MyS1.Write(Edit1.Text[1],Length(Edit1.Text));

принимаю

SetLength(MyP, MyS2.Size);
MyS2.Read(MyP[1], Length(MyP));

Например передаю строку "123" - получаю "12" !!!! Но если я напишу

SetLength(MyP, MyS2.Size+5);

то все нормально. И именно 5 - если меньше то обрежется, если больше то никаких изменений. Понимаю что туплю, но объясните, если можно
PM MAIL   Вверх
Alexeis
Дата 24.3.2006, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



перед чтением желательно добавить
Stream.seek(0, soFromBeginning);


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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