Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Алгоритм шифрования [D7, WinXP]


Страницы:   1 2 3

Dark_blue ©   (2007-10-16 14:25:00) 

Приветствую уважаемые мастера подскажите мне пожалуйста простой код для шифрования и дешифрования информации. То есть у меня есть текстовый файл мне нужно его зашифровать, затем в другой программе загрузить информацию из файла, но уже расшифрованную, как это сделать?


Германн   (2007-10-17 18:11:00) [1]


> Leonid Troyanovsky ©   (17.10.07 18:05) [40]
>
>
> > Германн ©   (17.10.07 17:11) [37]
>
> > Спер мою идею 12-ти летней давности :-)
>
> Если ты про саму идею, то ей уж века 3,
> квадрат Виженера зовут.
>

Я про идею в сочетании с фразой "
> Для усложнения жизни вражеских разведок
"  
Примерно этими же словами я ответил начальству, которое потребовало шифрования обмена с контроллерами. :-)


Leonid Troyanovsky   (2007-10-17 18:05:00) [2]


> Германн ©   (17.10.07 17:11) [37]

> Спер мою идею 12-ти летней давности :-)

Если ты про саму идею, то ей уж века 3,
квадрат Виженера зовут.

--
Regards, LVT.


Leonid Troyanovsky   (2007-10-17 18:03:00) [3]


> Сергей М. ©   (17.10.07 16:50) [36]

>      DataBuffer[i+j] := DataBuffer[i+j] xor KeyBuffer[j];

Ну, а вопрошающий второй цикл реализовал собс-ручно.
Т.е., почему ж некорректен?

Хотя, я бы предпочел что-то вроде:
DataPos^ :=  DataPos^  xor
                  Byte(KeyBuffer[(DataPos + i) modKeyLength]);

--
Regards, LVT.


Сергей М.   (2007-10-17 17:14:00) [4]


> Германн ©   (17.10.07 17:11) [37]


В этом дерьмовом мире ни одна гениальная идея не рождается без плагиата)


Германн   (2007-10-17 17:11:00) [5]


> Сергей М. ©   (17.10.07 16:24) [34]

Спер мою идею 12-ти летней давности :-)


Сергей М.   (2007-10-17 16:50:00) [6]

procedure Chipher(DataBuffer: PByteArray; DataLength: Integer; KeyBuffer: PByteArray; KeyLength: Integer);
var
i, j: Integer;
begin
for i := 0 to Abs(DataLength - KeyLength) - 1 do
   for j := 0 to Min(DataLength, KeyLength) - 1 do
     DataBuffer[i+j] := DataBuffer[i+j] xor KeyBuffer[j];
end;

var  s, k: String;

..
 s := 'ABCDEFGH';
 k := #$55#$22#$55;

 Chipher(PByteArray(@s[1]), Length(s), PByteArray(@k[1]), Length(k));
 ShowMessage(s);

 Chipher(PByteArray(@s[1]), Length(s), PByteArray(@k[1]), Length(k));
 ShowMessage(s);


pathfinder   (2007-10-17 16:25:00) [7]


> Сергей М. ©   (17.10.07 16:02) [32]



> Должен быть вложенный цикл.


Это как?


Сергей М.   (2007-10-17 16:24:00) [8]


> Leonid Troyanovsky ©   (17.10.07 16:17) [33]


Для усложнения жизни вражеских разведок)


Leonid Troyanovsky   (2007-10-17 16:17:00) [9]


> Сергей М. ©   (17.10.07 16:02) [32]

> Должен быть вложенный цикл.

А на зачем?

--
Regards, LVT.


Сергей М.   (2007-10-17 16:02:00) [10]


> Корректен ли данный код,


Не корректен.

Должен быть вложенный цикл.


pathfinder   (2007-10-17 12:32:00) [11]


> Сергей М. ©   (17.10.07 12:22) [30]


Будем знать. Спасибо:)

Я тут попробовал набросать аналогичную процедуру для шифрования с ключом больше 1 байта. Получилось что-то такое:

procedure Ciphering(DataBuffer: Pointer; DataLength: Integer;
                            KeyBuffer: Pointer; KeyLength: Integer);
var
 DataPos, KeyPos: PByte;
 KeyCnt, i: Integer;
begin
 DataPos := DataBuffer;
 KeyPos := KeyBuffer;
 KeyCnt := 1;

 for i := 1 to DataLength do begin
   if KeyCnt > KeyLength then
     KeyPos := KeyBuffer;

   DataPos^ := DataPos^ xor KeyPos^;

   Inc(DataPos);
   Inc(KeyPos);
   Inc(KeyCnt);
 end;
end;

Корректен ли данный код, или стоит что-то подправить?


Сергей М.   (2007-10-17 12:22:00) [12]


> pathfinder   (17.10.07 12:16) [29]


При отключенной опции компилятора Range Checking к массиву можно спокойно обращаться по любому значению индекса, а не только входящему в определенный типом диапазон.


pathfinder   (2007-10-17 12:16:00) [13]


> Сергей М. ©   (17.10.07 12:08) [28]


Вот здесь:
>  PByteArray(ms.Memory)[i] := PByteArray(ms.Memory)[i] xor Key;
 

 PByteArray = ^TByteArray;
 TByteArray = array[0..32767] of Byte;


Сергей М.   (2007-10-17 12:08:00) [14]


> pathfinder   (17.10.07 12:05) [27]


А где в коде использование этого типа, тем более данныхэтого типа ?


pathfinder   (2007-10-17 12:05:00) [15]


> Сергей М. ©   (16.10.07 14:33) [1]


Сергей, а почему ваш код работает с большими файлами, если тип TByteArray может содержать только до 32767 элементов?


FIL-23   (2007-10-17 11:22:00) [16]

короче ... можно проще сделать просто каждый символ переведи в бинарный код и смести его по функции xor  на определенную цифру.... получится полная ерунда из цифр))).... а потом тем же самым xor ом  на тоже число смести его обратно..... и получится очень просто и сердито)))


Маша Шрайбер   (2007-10-17 10:46:00) [17]

>> Сергей М. ©   (16.10.07 16:02) [24]
>> Так что следи за своим бревном)

С удовольствием. А где оно?


Сергей М.   (2007-10-16 16:02:00) [18]


> Маша Шрайбер ©   (16.10.07 15:44) [23]


Смысл понятен ? Понятен).. А вот в [5] - нет.

Так что следи за своим бревном)


Маша Шрайбер   (2007-10-16 15:44:00) [19]

>> Сергей М. ©   (16.10.07 15:08) [14]
>> p.s. Любезный, изволь все-таки расставлять знаки препинания там где им положено находиться по правилам русского языка)

Интересное предложение с т.з. расстановки знаков препинания там, где им положено находиться :)))))


Сергей М.   (2007-10-16 15:32:00) [20]


> Dark_blue   (16.10.07 15:28) [20]
> я не указал ключ


Ключ можно и не указывать, это уж как тебе вздумается)

Но неуказание ключа никоим образом не говорит о том, что "алгоритм не шифрует информацию", так что ври да не завирайся)


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо