Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.08.2008, 20:37   #1
SoundMan
Пользователь
 
Регистрация: 25.05.2008
Сообщений: 27
По умолчанию Шифрование текста

Пытаюсь написать функцию шифрования текста с использованием ассемблера, но неполучается, то фатал ерроры вылетают, то просто не запускается...
Вот код:
Код:
function TForm1.decode(text, code: string):string;
begin
 asm
   mov eax,text
   mov ebx,code
   push eax
   push ebx
 @@L01:
   xor esi,esi
   movzx esi,byte ptr DS:[eax]
   test esi,esi
   jz @@L02
   xor esi,code
   mov result,esi
   inc eax
   jmp @@L01
 @@L02:
   pop ebx
   pop eax
 end;
end;
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
 Memo1.Text := Decode(Edit1.text, Edit2.Text);
end;
Помогите дописать!

Последний раз редактировалось SoundMan; 15.08.2008 в 20:43.
SoundMan вне форума Ответить с цитированием
Старый 15.08.2008, 21:23   #2
Air
Участник клуба
 
Аватар для Air
 
Регистрация: 30.04.2007
Сообщений: 1,307
По умолчанию

У меня вопрос.
- что обязательно так?
чем не устраивает base64 или CSCA1?
Всё гениальное - просто!

Последний раз редактировалось Air; 15.08.2008 в 21:59.
Air вне форума Ответить с цитированием
Старый 15.08.2008, 21:57   #3
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Вот держите на pascal'e и то-же самое с ассемблерной вставкой.
Только непонятно зачем на asm'е.

Код:
function TForm1.decode(text, code:String):String;
var n, i:integer;
begin
   result := text;
   UniqueString(result);
   n := 1;
   for i:=1 to length(text) do begin
      result[i] := chr(ord(result[i]) xor ord(code[n]));
      if n > length(code)
      then n := 1
      else inc(n);
   end;
end;

function TForm1.decode1(text, code:String):String;
var L:integer;
begin
   // При xor шифровании внутри строки может встретиться #0
   // поэтому длину строки определяем вызовом length,
   // а не поиском #0 в цикле
   L := length(text);
   result := text;
   UniqueString(result);
   asm
        push esi
        push edi
        push eax
        push edx
        push ecx

        mov  ecx, L
        mov  edx, [соdе]        // code !!!
        mov  esi, result
        mov  esi, [esi]
      @@Loop1:
        mov  edi, edx
      @@Loop2:
        jcxz @@exit
        mov  al, byte ptr [esi]

        xor  al, [edi]
        mov  [esi], al
        inc  esi
        dec  ecx
        inc  edi
        cmp  byte ptr [edi], 0
        je   @@Loop1

        jmp  @@Loop2
      @@exit:

        pop  ecx
        pop  edx
        pop  eax
        pop  edi
        pop  esi
   end;
end;

procedure TForm1.FormCreate(Sender: TObject);
var key:String;
begin
   // Зашифрованный текст в memo лучше не показывать
   key := 'key';
   Memo1.Text := decode(
                   decode('йцукенгшщзх text string for decode', key),
                   key);
   Memo1.Text := Memo1.Text + #13#10+
                 decode1(
                   decode1('йцукенгшщзх text string for decode', key),
                   key);
end;
------
Хм. (.Code.) в тексте ассемблера распознается как тэг

Последний раз редактировалось alexBlack; 15.08.2008 в 22:24.
alexBlack вне форума Ответить с цитированием
Старый 15.08.2008, 22:39   #4
SoundMan
Пользователь
 
Регистрация: 25.05.2008
Сообщений: 27
По умолчанию

To alexBlack
Спасибо большое!
Цитата:
Только непонятно зачем на asm'е.
Просто давно хотел узнать как это делается на АСМе))
SoundMan вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Побуквенное шифрование текста! Gauss Общие вопросы Delphi 11 23.08.2013 19:14
шифрование Stanislav Свободное общение 10 04.03.2008 05:09