delphi4arab منتديات دلفي للعرب
Simple Encrypt - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي التقنية (https://delphi4arab.net/forum/forumdisplay.php?fid=6)
+--- قسم : دلفي والتعامل مع الملفات (https://delphi4arab.net/forum/forumdisplay.php?fid=22)
+--- الموضوع : Simple Encrypt (/showthread.php?tid=95)



Simple Encrypt - STRELiTZIA - 22-03-2008

السلام عليكم و رحمة الله
طريقة بسيطة لتشفير اي ملف و حل تشفيره
الملفات المصدرية مرفقة

PHP كود :
(*
Simple Encrypt for Educational use
Coded By STRELiTZIA 03/22/2008
---
You can change code and use it WITHOUT REMOVE MY NAME :)
---

"OnClick Button Action"
procedure EncrOrDecr(_InPutFile, _OutPutFile: string; Key [Simple integer Key], Param [1 = Encrypt] [2 = Decrypt] [Other = Nothing]: integer);
*)


unit MainFrm;

interface

uses
  Windows
, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  
Dialogs, StdCtrls, Gauges, ExtCtrls, jpeg;

type
  TMain 
= class(TForm)
    
OpenDialog: TOpenDialog;
    
SaveDialog: TSaveDialog;
    
Pnl: TPanel;
    
ProgressGge: TGauge;
    
KeyEdt: TEdit;
    
KeyLbl: TLabel;
    
OutPutFileEdt: TEdit;
    
InPutFileEdt: TEdit;
    
OpenBtn: TButton;
    
InPutFileLbl: TLabel;
    
OutPutFileLbl: TLabel;
    
SeparatorLbl: TLabel;
    
CoderLbl: TLabel;
    
LogoImg: TImage;
    
EncryptBtn: TButton;
    
DecryptBtn: TButton;
    
procedure OpenBtnClick(Sender: TObject);
    
procedure KeyEdtKeyPress(Sender: TObject; var Key: Char);
    
procedure EncryptBtnClick(Sender: TObject);
    
procedure DecryptBtnClick(Sender: TObject);
  private
    { Private 
declarations }
  public
    { Public 
declarations }
  
end;

var
  
Main: TMain;

implementation
uses XpMan
; (* <<-- For Windows Xp Look :) *)
{
$R *.dfm}

(* 
______________________________________________________*)

procedure EncrOrDecr(_InPutFile, _OutPutFile: string; Key (* Simple integer Key *), Param (* [1 = Encrypt] [2 = Decrypt] [Other = Nothing] *): integer);
var
  
InPutFileStream, OutPutFileStream: TFileStream;
  
_ReadBuffer, _WriteBuffer: Char;
  
i: integer;
begin

  InPutFileStream 
:= TFileStream.Create(_InPutFile, FmOpenRead); (* Create FileStream and Open our file in Read mode *)
  
OutPutFileStream := TFileStream.Create(_OutPutFile, FmOpenWrite or FmCreate or FmSharedEnyWrite); (* Create new FileStream for our new file in write mode *)

  
Main.ProgressGge.MaxValue := InPutFileStream.Size; (* Initialization to InPutFile Size *)

  for 
i := 0 to InPutFileStream.Size - 1 do
  
begin
    InPutFileStream
.Read(_ReadBuffer, SizeOf(_ReadBuffer));

    case 
Param of
      1
: begin _WriteBuffer := Char(Pchar(_ReadBuffer) + Key); (* if Param = 1 Encrypt called *) end;
      
2: begin _WriteBuffer := Char(Pchar(_ReadBuffer) - Key); (* if Param = 2 Decrypt called *) end;
    
end;
    
Main.ProgressGge.Progress := Main.ProgressGge.Progress + 1;
    
OutPutFileStream.Write(_WriteBuffer, SizeOf(_WriteBuffer));
  
end;
  
ShowMessage('Complete... :) [Simple Encrypt fo EDUCATIONAL USE]');
  
InPutFileStream.Free;
  
OutPutFileStream.Free;
  
Main.ProgressGge.Progress := 0; (* Reset *)

end;
(* 
______________________________________________________*)

procedure TMain.OpenBtnClick(Sender: TObject);
begin
  
if Opendialog.Execute then
  begin
    InPutFileEdt
.Text := OpenDialog.FileName;
    
OutPutFileEdt.Text := OpenDialog.FileName + '.Out';
  
end;
end;
(* 
______________________________________________________*)

procedure TMain.KeyEdtKeyPress(Sender: TObject; var Key: Char);
begin
  
if not (Key in ['0'..'9', #8]) then Key := #0; (* Accept only number [#8 for Remove key] *)
end;
(* 
______________________________________________________*)

procedure TMain.EncryptBtnClick(Sender: TObject);
begin
  
if (InPutFileEdt.Text <> '') and (OutPutFileEdt.Text <> '') and (KeyEdt.Text <> '') then
    EncrOrDecr
(InPutFileEdt.Text, OutPutFileEdt.Text, StrToInt(KeyEdt.Text), 1) else (* Param = 2 [ENCRYPT]*)
    
ShowMessage('ERROR : [Informations missing]');
end;
(* 
______________________________________________________*)

procedure TMain.DecryptBtnClick(Sender: TObject);
begin
  
if (InPutFileEdt.Text <> '') and (OutPutFileEdt.Text <> '') and (KeyEdt.Text <> '') then
    EncrOrDecr
(InPutFileEdt.Text, OutPutFileEdt.Text, StrToInt(KeyEdt.Text), 2) else (* Param = 2 [DECRYPT]*)
    
ShowMessage('ERROR : [Informations missing]');
end;
end. 

بالتوفيق


Simple Encrypt - مهدي - 22-03-2008

و عليكم السلام و رحمة الله

مشروع ممتاز يحتاج خاصيتين ليصبح على أعلى مستوى.

لن أخبرك عنهما حتى تعدني بأن تبذل قصارى جهدك لتحقيقهما.



Simple Encrypt - STRELiTZIA - 22-03-2008

إقتباس :مشروع ممتاز يحتاج خاصيتين ليصبح على أعلى مستوى.
لن أخبرك عنهما حتى تعدني بأن تبذل قصارى جهدك لتحقيقهما

على عيني اخي مهدي Big Grin
تحياتي



Simple Encrypt - مهدي - 22-03-2008

الخاصية الأولى:
منع تشفير ملف مشفر - أي يتم تشفير الملف مرة واحد و لا يقبل إلا حل التشفير.


الخاصية الثانية:
على البرنامج أن يتأكد من صحة كلمة مرور الملف المشفر حتى يقوم بحل التشفير، أما إذا كانت كلمة المرور خاطئة يمنعك من حل التشفير بكلمة مرور خاطئة أو فارغة بشرط.


سرعة الإستجابة في التأكد من صحة كلمة المرور حتى مع الملفات الكبيرة الحجم 200 ميجا بايت فأكثر


[size=5]كان الله في عونك.[/size]



Simple Encrypt - STRELiTZIA - 24-03-2008

السلام عليكم و رحمة الله
- تشفير الملف المشفر يزيد من تعقيد محاولة كسره و معضم برامج التشفير تترك للمستعمل حرية هذة الخاصية لاستفادة منها. على كل حال يكون لك ذلك ان شاء الله Smile

- في هذا المثال البسيط المرفق لا يتم حفظ الــ Key في الملف المشفر لانه يبدل ترتيب الــ Position لــ Characters بقيمة الــ Key يعني :
----
a تصبح b اذا كان الــ key يساوي 1 العمل فقط على الــ Character position
التشفير a + 1 = b
حل التشفير b - 1 = a
----
للفهم اكثر ننشئ ملف Text و نكتب فيه abcdefghijklmnopqrstuvwxyz ثم نقوم بتشفيره بــ key 1
و نقارن جيدا بين الملفين... POSITION CHARACTER

على كل حال يكون لك ذلك ان شاء الله Smile

- سارفق ايظا طريقة عمل Hash لــ Key و Encryptage محترف للملفات مع ملفات مصدرية كمثال جديد و هو :
Blowfish, RijnDael

تحياتي


Simple Encrypt - مهدي - 24-03-2008

إقتباس :و معظم برامج التشفير تترك للمستعمل حرية هذة الخاصية لاستفادة منها

اجعل في البرنامج خانة اختيار Check Box للمستخدم.

إقتباس :لا يتم حفظ الــ Key في الملف المشفر

لعله في المستقبل نضيف لهذا المثال خاصية SFX التي تقوم بحفظ الملف الذي يحمل كلمة المرور في الملف نفسه.


Simple Encrypt - Ahmed18 - 07-06-2008

بارك الله فيك Smile