Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

Криптография (Delphi)

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
bv7



Зарегистрирован: 13.10.2008
Сообщения: 6

СообщениеДобавлено: Пн Окт 13 2008 20:55    Заголовок сообщения: Криптография (Delphi) Ответить с цитатой

Нужна помощь в реализации кодирования информации. Шифрование реализуется алгоритмом RC6, все кодирует без проблем по 64 бита, если остается часть меньше 64 бит, то она просто дописывается без кодирования.

Вот реализация функции кодирования:


Код:
function EncryptCopy(DestStream, SourseStream : TStream; Count: Int64;
  Key : string): Boolean;
var
  Buffer   : TRC6Block;
  PrCount  : Int64;
  AddCount : Byte;
begin
 Result := True;
 try
   if Key = '' then
     begin
       DestStream.CopyFrom(SourseStream, Count);
       Exit;
     end;
   Initialize(Key);
   CalculateSubKeys;
   PrCount := 0;
   while PrCount <> Count do  // всё ли зашифровано?
     begin
       SourseStream.Read(Buffer, BlockSize);
       EncipherBlock(Buffer);
       DestStream.Write(Buffer, BlockSize);
       Inc(PrCount, BlockSize);
     end;

   AddCount := Count - PrCount;
   if Count - PrCount <> 0 then
     begin
       SourseStream.Read(Buffer, AddCount);
       DestStream.Write(Buffer, AddCount);
     end;
 except
   Result := False;
 end;
end;
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
grf



Зарегистрирован: 05.04.2005
Сообщения: 1242
Откуда: Москва

СообщениеДобавлено: Пн Окт 27 2008 15:03    Заголовок сообщения: Ответить с цитатой

Цитата:
64 бит, то она просто дописывается без кодирования.


Блин, а я всегда в последние полсотни бит ключ записывал Laughing

Wink
_________________
Errare humanum est
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
bv7



Зарегистрирован: 13.10.2008
Сообщения: 6

СообщениеДобавлено: Пн Окт 27 2008 17:19    Заголовок сообщения: Ответить с цитатой

Чем острить, помог бы лучше.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
grf



Зарегистрирован: 05.04.2005
Сообщения: 1242
Откуда: Москва

СообщениеДобавлено: Ср Окт 29 2008 17:30    Заголовок сообщения: Ответить с цитатой

чем? я что-то вопросов в твоем топике не увидел?


Wink
_________________
Errare humanum est
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Mytilus Galloprovincialis



Зарегистрирован: 30.08.2005
Сообщения: 358
Откуда: откуда все люди родятся

СообщениеДобавлено: Ср Ноя 19 2008 03:04    Заголовок сообщения: Ответить с цитатой

Сначала не плохо бы внимательно прочитать код.
Мы имеем цикл, прерывающийся при PrCount = Count, а следующей строкой идет AddCount := Count - PrCount. Shocked
Проще было бы написать AddCount := 0, не правда ли? ))
Далее видим: if Count - PrCount <> 0 then. А с чего бы им быть НЕравными, если перед этим мы косвенно провели проверку на их равенство (в условии цикла)?
Короче, юзаем код, исправляем ошибки, и, возможно, разум победит над железом.

Удачи! Wink
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...