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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Encryption... помогите нубу!!! 
:(
    Опции темы
GreedyFly
Дата 7.9.2014, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



День добрый!
Подскажите как с помощью этой Unit  шифровать, дешифровывать строки...
к примеру:
qwerty - с ключом (123456)

Код


unit Encrypt;

interface

uses
   SysUtils, WinProcs, Messages, Classes, Graphics, WinTypes, Controls,
   Forms, Dialogs;

type
   TActionType = (atEncryption, atDecryption);
   TEncryption = class(TComponent)
   private
      { Private declarations }
      FInputString:string;
      FOutputString:string;
      FHexInputString:string;
      FHexOutputString:string;
      FKeyString:string;
      FAction:TActionType;
      procedure SetInputString(input:string);
      procedure SetOutputString(input:string);
      procedure SetKeyString(input:string);
      Function EncryptionEngine (Src:String; Key : String;
   Encrypt : Boolean):String;
   protected
      { Protected declarations }
   public
      { Public declarations }
      constructor Create(AOwner: TComponent);override;
      Procedure Execute;
   published
      { Published declarations }
      property Input: String read FInputString write SetInputString;
      property Output: String read FOutputString write SetOutputString;
      property Key: String read FKeysTRING write SetKeyString;
      property Action: TActionType read FAction write FAction default atEncryption;
   end;

   procedure Register;

   implementation

   procedure Register; 
   begin
      RegisterComponents('Componentes', [TEncryption]);
   end;

   constructor TEncryption.Create(AOwner: TComponent);

   begin      
      inherited Create(AOwner);
      Action:=atEncryption;
   end;

   Procedure TEncryption.SetOutputString(input:string);
   begin
      if input<> FOutputString then
         FOutputString:=input;
   end;

   Procedure TEncryption.SetKeyString(input:string);
   begin
      if input<> FKeyString then
         FkeyString:=input;
   end;

   Procedure TEncryption.SetInputString(input:string);
   begin
      if input<> FInputString then
         FInputString:=input;
   end;

   Function TEncryption.EncryptionEngine (Src:String; Key : String; 
   Encrypt : Boolean):string;
   var
      idx       :Integer;
      KeyLen    :Integer;
      KeyPos    :Integer;
      offset    :Integer;
      dest      :string;
      SrcPos    :Integer;
      SrcAsc    :Integer;
      TmpSrcAsc :Integer;
      Range     :Integer;

   begin
      KeyLen:=Length(Key);
      if KeyLen = 0 then key:='Tom Lee';
      KeyPos:=0;
      SrcPos:=0;
      SrcAsc:=0;
      Range:=256;
      if Encrypt then
      begin
         Randomize;
         offset:=Random(Range);
         dest:=format('%1.2x',[offset]);
         for SrcPos:= 1 to Length(Src) do
         begin
            SrcAsc:=(Ord(Src[SrcPos]) + offset) MOD 255;
            if KeyPos < KeyLen then KeyPos:=KeyPos + 1 
            else KeyPos:= 1;
            SrcAsc:= SrcAsc xor Ord(Key[KeyPos]);
            dest:= dest + format('%1.2x',[SrcAsc]);
            offset:= SrcAsc;
         end end else
         begin
            offset:=StrToInt('$'+copy(src,1,2));
            SrcPos:= 3;
            repeat
               SrcAsc:=StrToInt('$'+copy(src,SrcPos,2));
               if KeyPos < Keylen then KeyPos := KeyPos + 1 else Keypos := 1;
               TmpSrcAsc := SrcAsc xor Ord(Key[KeyPos]);
               if TmpSrcAsc <= offset then
                  TmpSrcAsc := 255 + TmpSrcAsc - offset
               else
                  TmpSrcAsc:= TmpSrcAsc - offset;
               dest := dest + chr(TmpSrcAsc);
               offset:=SrcAsc;
               SrcPos:=SrcPos  + 2;
            until SrcPos >= Length(Src);
         end;
         Result:=Dest;
      end;

      procedure TEncryption.Execute;
      var
         EncryptionFlag:Boolean;
      begin
         if length(FInputString)=0 then
         begin
            FOutputString:='';
            exit;
         end;

         if FAction = atEncryption then
            EncryptionFlag:= True
         else
            EncryptionFlag:= False;

         FOutputString:=EncryptionEngine(FInputString, FKeyString, 
         EncryptionFlag);
 
      end;
   end.

PM MAIL   Вверх
drkot
Дата 7.9.2014, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


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

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



Код

with TEncryption.create(self) do begin
input:= 'qwerty';
key:= '123456';
action:= atEncryption;
execute;
showmessage(output);
end;



--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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